Data before addr(写数据先于写地址)配置
总结
对于一笔transaction,写数据先于写地址发送的配置流程为:
1. 配置data_before_valid为1
2. 配置reference_event_for_addr_valid_delay
为FIRST_WVALID_DATA_BEFORE_ADDR
3. 配置reference_event_for_first_wvalid_delay
为PREV_WRITE_DATA_HANDSHAKE
4. 配置addr_valid_delay为需要的delay
依赖关系
对于axi协议,写数据和写地址的发送先后没有依赖,可以写数据先于写地址发送,也可以写地址先于写数据发送
延迟配置
Synopsys axi vip可以通过配置svt_axi_transaction::addr_valid_delay,svt_axi_transaction::wvalid_delay来控制写数据和写地址的延迟:
reference_envet配置
需要注意的是,addr_valid_delay和wvalid_delay这两个参数只是定义了延迟的数值,但是究竟相对于哪个参照物的延迟并不知道。需要配置相应的参照为u才可以达到数据先于地址发送的效果。addr_valid_delay的参照物由reference_event_for_addr_valid_delay定义,而wvalid_delay的参照物由reference_event_for_first_wvalid_delay和
reference_event_for_next_wvalid_delay定义。
其中FIRST_WVALID_DATA_BEFORE_ADDR的参照物为当前transaction的写数据通道第一次握手的时刻,它用于写数据先于写地址发送。同时需要配置data_before_addr才会生效。
要想实现写数据先于写地址发送,还需要将wvalid_delay的reference_event配置成PREV_WRITE_DATA_HANDSHAKE才可以。
Axready延迟配置
如果default_axready=0(1),则相对于
reference_event_for_addr_ready_delay延迟addr_ready_delay个时钟周期,axready信号拉高(低)。
但是这样设置在axvalid拉高时,axready要么为高(default_axready=1),要么为低(default_axready=0),无法达到一种随机的效果(可能为高,也可能为低)。
可以通过打开
svt_axi_port_configutation::toggle_ready_signals_during_idle_period使axready可以在axvalid=0时随机翻转.
领取专属 10元无门槛券
私享最新 技术干货