Professional Documents
Culture Documents
UMC Register Model Gotchas: - Sumanth Kedilaya
UMC Register Model Gotchas: - Sumanth Kedilaya
gotchas
-Sumanth Kedilaya
AXI interface
• 5 channels
• Read Address Channel- (ARx)
• Read Data Channel- (Rx)
• Write Address Channel- (AWx)
• Write Data Channel- (Wx)
• Write Response Channel- (Bx)
• Every channel’s transcation has an ID and can be used to match
request and response. Example- {ARID, RID}, {AWID,WID,BID}
AXI interface
• There are 2 AXI interfaces for each UMC.
• AXI Slave interface – named SmnTarg_*
• AXI Master interface- named SmnInit_*
• AXI Slave interface-> UMC is the slave and only responds to requests.
UMC cannot initiate any requests here. This will be driven by the CS.
This is used to access UMC, RSMU and PHY registers. Indirect
accessed registers;ApbDat and ApbCmd
• AXI Master interface-> UMC is the master and initiates via the RSMU a
read or a write. This is used to signal vwire activity to the pie registers
in DF, to read from Fusestrap and to fuse values in UMC etc.
AXI interface
• 2 ways to create transaction on AXI interface
• Create AXI packets and run on AXI interface using the sequencers provided by
AXI UVC. More complicated and try to avoid. Eg: csr_irritator
• Regmodel: The regmodel is effectively a big data structure and can be used
along with the AXI UVC to create transactions.
• For example: write() function in the RAL model uses the reg2axi() function in axi_adapter
to convert register data (Address, write data etc) into AXI bus protocol and uses the AXI
write data drivers to drive on to the AXI bus. Similarly for reads.
RSMU
• Where do we use RSMU?
• Getting in and out of reset.
• Writing into RSMU_UMC_COLD_RESETB and RSMU_UMC_HARD_RESETB registers
• Look at. src/verif/seqs/base/umc_reset_seq_libsvh:: hardresetb_deassert_sequence() and coldresetb_deassert_sequence()
• Loading fuse values
• Read from fuse strap via the AXI master interface. Load to UMC via UMCSMN.
• Look at src/verif/export/umc_reset_uvc/umc_reset_seq_lib.svh::fuse_delivery_seq()
• AEB security protection
• Set AEB_019 bit, which disables debugbus.
• Look at src/verif/seqs/axi/umc_csr_seq_lib.svh::rsmu_security_slave_check_seq()
• Power gating
• PGFSM-> Raven feature.
• As a traffic cop for UMC register access.
• Decode the AXI bus data, make it understandable to UMC and pass the traffic along for UMC to decode and execute (Read/Write)
src/verif/export/umc_reset_uvc/umc_rsmu_uvc.svh
• Where is RSMU in the umc depot? src/verif/export/umc_reset_uvc/umc_rsmu_uvc.svh
Register Model: What is it?
• A singleton data structure which mirrors the value of RTL registers, also used to
access the RTL registers via Frontdoor or backdoor.
• Why singleton? Because we want uniform data across all verif components.
• Where is it in our depot?
src/verif/export/umc_reg_singleton/umc_reg_singleton.svh
• Structure of a generic UVM RAL model.
• Uvm_reg_block -> register blocks which contain many registers like umcch, umcctrl
• Uvm_reg_map -> umchdec,umcctrldec which has register mapped on to it.
• Uvm_reg -> Individual registers like DramTiming1, BeqCtrl1 etc
• Uvm_reg_field -> each uvm_reg is divided into many register fields like Tcwl, Tcl etc.
Register Model: How does it look?
uvm_reg_block
Umc_w_phy_block
uvm_reg_block uvm_reg_block
Umc0 Umc1
(uvm_reg_map- (uvm_reg_map-
>GpuF0Map) >GpuF0Map)
uvm_reg_block uvm_reg_block
UMCCH0 UMCCTRL
UMCCH0 UMCCTRL
(uvm_reg_map-> (uvm_reg_map-
umcchdec) >umcctrldec)
uvm_reg
uvm_reg
Dramtiming1
ApbDat register
register