如何在Modelsim仿真中显示状态机名称

2025-03-23 12:19:14
推荐回答(1个)
回答1:

1. Virtual Signals
Virtual Signal 可以将多个信号绑定在一起,从而生成一个新的信号。
选择信号,在 wave菜单中选择Combine Signals命令即可

注:Virtual Signal 与 Group 是不一样的,Group只是在信号排列时将多个信号放到一个组下。
2. Virtual Type
使用 Virtual Type 可以创建一个枚举类型,而该枚举类型可以在随后的仿真中使用。其命令格式如下:
Virtual type {
{val1 s1}
{val2 s2}

{valn sn}
} newVirtualType;
如上所示,val 表示枚举值, s 表示枚举名。而 newVirtualType 表示新的枚举类型的名称。
注:
Virtual type 与 { 之间一定要有空格。
3. Virtual Function
Virtual Function 与 Virtual Signals 有些类似,但虚拟函数不是单纯的对原信号进行合并或取子集,它可以对原信号进行运算或标记,并可以随之时间更改。其命令格式如下:
Virtual function {}
命令中的 是表达式字符串,即函数的执行功能。 是指定的输出名称。
例:如下命令是对一个信号进行取反操作
Virtual function {not sim:/tb_demux/uut/wrcache_we} not_wrcache_we
4. 如何使用虚拟对象显示状态机名称?
· 使用 virtual type 创建一个新的枚举类型,如下:
virtual type {
{12′b000000000001 s_wait_chn_cache_rdy}
{12′b000000000010 s_read_chn_data}
{12′b000000000100 s_data_load}
{12′b000000001000 s_data_shift}
{12′b000000010000 s_check_blk_ct}
{12′b000000100000 s_clr_chn_cache}
{12′b000001000000 s_wait_fifo_not_full}
{12′b000010000000 s_copy_data_to_sdr_fifo}
{12′b000100000000 s_launch_sdr_wr_cmd}
{12′b001000000000 s_chk_end_of_chn}
} DEMUX_FSM_TYPE;
注:在 12′b000000000001 值中是不允许出现 ‘_’ 分隔符的,否则会报错
· 使用 vritual function 命令对状态寄存器进行类型转换以生成一个新的信号,如下:
virtual function {(DEMUX_FSM_TYPE)/tb_demux/uut/s_reg} s_state;