modelsim双向口仿真问题
我在模块内部定义了几个信号regread,regwrite,wiretr,wiredat(其中dat为inout类型)单独通过quartus综合成功在rtl中也能看到正确...
我在模块内部定义了几个信号
reg read,reg write,wire tr,wire dat(其中dat为inout类型)
单独通过quartus综合成功 在rtl中也能看到正确的rtl连接既
当tr为1时为写即write<=dat
当tr为0时为读即dat=read
这些功能是在模块内部的,运行也很正常。
问题是 如果我要在modelsim里仿真在写tb时 dat这个怎么处理呢 是reg还是什么呢
难道在tb文件中也要一套双向门的控制机制 控制内部模块的运行吗 展开
reg read,reg write,wire tr,wire dat(其中dat为inout类型)
单独通过quartus综合成功 在rtl中也能看到正确的rtl连接既
当tr为1时为写即write<=dat
当tr为0时为读即dat=read
这些功能是在模块内部的,运行也很正常。
问题是 如果我要在modelsim里仿真在写tb时 dat这个怎么处理呢 是reg还是什么呢
难道在tb文件中也要一套双向门的控制机制 控制内部模块的运行吗 展开
1个回答
2015-04-16 · 知道合伙人互联网行家
关注
展开全部
第一个warning出现是因为你在testbench里头没有指明timescale,
也就是说你的#50是表示50ns,还是50ps,或者是50us?
修改方法:在testbench里第一行,modlue testbenchcounter之前,
加上一行
`timescale 1ns/1ns,前一个表示你在tb里头写的数字的单位,
后一个表示仿真时候的精度。
第二个error是因为q对于counter来说是output,
所以在testbench里头应该声明为wire型变量,
并且不需要在initial里头对它进行赋初始值。
初始值的赋予应该在设计模块中引入reset信号
也就是说你的#50是表示50ns,还是50ps,或者是50us?
修改方法:在testbench里第一行,modlue testbenchcounter之前,
加上一行
`timescale 1ns/1ns,前一个表示你在tb里头写的数字的单位,
后一个表示仿真时候的精度。
第二个error是因为q对于counter来说是output,
所以在testbench里头应该声明为wire型变量,
并且不需要在initial里头对它进行赋初始值。
初始值的赋予应该在设计模块中引入reset信号
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询