本文移植於tutortecho 2020年6月21日 撰寫
- uvm_sequence 中的 grab 和 lock 的差別在於 lock 是發 request 到 sequencer 後面排隊, grab 則是直接到隊伍前面插隊
- uvm_sequence 提供一個 virtual function bit is_relevant 可以被override, return 1 代表此 sequence 有效, 0 則無效
- `uvm_do(req) 等同於 `uvm_do_on(req, this.m_sequencer)
- sequencer 可以傳送不同型態的 transaction, 只要將 sequencer 能接受的型態設定成 uvm_sequence_item, 在 driver 層接收時再 downcast 即可
- 在 sequence 中使用 m_sequencer 來放入 req.start(m_sequencer)
- 在 sequence 中定義 p_sequencer 來使用定義在 sequencer 中的變數
- uvm_sequence 可以 get config_db 來拿到參數, sequence 在整個環境中所在的位置在 uvm_test_top.m_env.m_agt.m_seqr.seq_name, config_db set 則是使用 uvm_test_top.m_env.m_agt.m_seqr.* 來當作各種不同的 sequence 的 hierarchy 名稱
- uvm_sequence 對自己傳送 config_db , 如同 flag 的使用一般
- 使用 response_handler 來實現 transaction input 和 response 的 pipeline
發表留言