在modelsim中以参数名显示状态机变量
0赞本文是自己看到网上资料整合而成的,没有商业用途,仅作为自己的学习笔记。以前很少写这样的总结,只是遇见问题了就上网找解决办法,解决了就不去管了,这样之后遇到同样的问题了还是得上网找别人的资料,浪费很多时间,今天起开始自己的总结之旅了,如果能对网友有所帮助,荣幸荣幸。
参考:1.ilovetech的博文 modelsim66中将波形图中变量显示的二进制数字命名为特定的名字 http://blog.sina.com.cn/s/blog_7b1b0bd90101lbjc.html
2.不会游泳的鱼 modelsim如何保存wave窗口波形 http://blog.sina.com.cn/s/blog_49eb23070101061g.html
在使用Verilog编写状态机等逻辑的时候,状态机的各个状态通常以参数表示,但当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进制编码的形式显示,例如:4’h0、4’h1等。这种显示形式不是很直观,不方便直观了解状态机状态之间的转换关系,但我们可以使用ModelSim提供的命令将状态机变量以“文本”形式的参数名显示,从而有利于观察与调试。通常情况下状态机变量显示如下:
修改后状态机显示的波形如下:
步骤:
1.为被测对象编写testbench,创建modelsim仿真项目,开始仿真,将所有信号添加到wave窗口;
2.创建virtual type:在modelsim transcript命令窗口输入命令
virtual type {{4'd0 IDLE} {4'd1 START} {4'd2 W_COM} {4'd3 W_COM_ACK} {4'd4 W_ADDR} {4'd5 W_ADDR_ACK} {4'd6 A_START} {4'd7 R_COM} {4'd8 R_COM_ACK} {4'd9 R_DATA} {4'd10 R_DATA_ACK} {4'd11 STOP}} FSM_TYPE
注意:一整条命令输入,不能有换行,每一项之间都有空格,输入完成后回车,即创建了FSM_TYPE类型的枚举类数据结构;
3.将被测模块中的状态机变量进行类型转换:在modelsim transcript窗口输入命令
virtual function {(FSM_TYPE)test_iic/iic_slave_ins/current_state} my_IIC_State
此命令为将test_iic/iic_slave_ins下的状态机信号current_state强制转换为FSM_TYPE类型。注意:需要指明状态机信号的路径。
4.修改wave.do文件,按照wave.do的信号格式,将信号my_IIC_State加入到波形窗口中。或者步骤3后,直接手动将其添加到wave窗口;
5.重新载入wave.do,运行,即可看到修改后的波形。
保留仿真后的波形,步骤如下:
1.点击file菜单下的save format,保存为.do格式文件
2.下次打开Modelsim后,在控制台输入do wave.do命令后,即可看到上次仿真的波形图
