bin里面应该是需要的脚本。
doc里面是相关文档
sim=simulation。里面应该是相关的仿真的波形或者testbench放的地方
syn=synthesize(综合),应该是经过向相应工具综合后的门级网表
src里面应该是存放相应源代码的地方
看看src里面的东西,有没有一个打开工程的目录。还得注意下,你用的是什么软件去编译verilog。如果用的不一样,就直接把各个文件添加进去,还有testbench。
(以上是我根据自己经验看的,如果不对还忘见谅,可以把更详细的东西贴出来,我们一起看看,谢谢)
下面的代码我已经用modelsim仿真过了,没有问题。module count(out,clk,rst)//源程序
input clk,rst
output[3:0] out
reg[3:0] out
initial out=4'd0
always @(posedge clk or negedge rst)
begin
if(!rst) out=4'd0
else
begin
out=out+4'd1
if(out==4'd1||out==4'd6||out==4'd8) out=out+4'd1
if(out==4'd5) out=out+4'd2
end
end
endmodule
`timescale 1ns/1ns //测试程序
`include "count.v"
module count_tp
reg clk,rst
wire[3:0] out
parameter DELY=100
count mycount(out,clk,rst)
always #(DELY/2) clk=~clk
initial
begin
clk=0rst=1
#(DELY*5) rst=0
#DELY rst=1
#(DELY*20) $finish
end
initial $monitor($time,,,"clk=%d rst=%d out=%d",clk,rst,out)
endmodule
module mul3_testbench //定义一个没有输入输出端口的测试平台reg a2,a1,a0,b2,b1,b0//被测模块的input端口,改为对应的 reg寄存器做输入信号
wire p5,p4,p3,p2,p1,p0//被测模块的output端口,改为对应的wire型
initial begin // 初始化所有 输入信号的寄存器值
a2= 0
a1=0
a0 =0
b2 =0
b1= 0
b0 =0
#50 //一般延迟较长时间后,应该使复位信号不复位系统正常工作,但你没有复位信号
end
// 初始化模块结束后一般时序电路仿真是产生时钟信号,
//这是纯组合逻辑没有时钟信号就省略了
//然后就可以根据你所需要验证的功能在此位置编写initial块或always块给reg 型
//的输入信号赋值的相关逻辑,观察wire型输入信号的值
//---------------------------调用被测对象,格式如一般元件调用-------------------
mul3 DUT( .a2(a2),
.a1(a2),
.a0(a0),
.b2(b2),
.b1(b2),
.b0(b0),
.p5(p5),
.p4(p4),
.p3(p3),
.p2(p2),
.p1(p1),
.p0(p0)
)
endmodule
// 最后的提示,你的程序里定义了整数型变量,其实是不好的用法,甚至不能被正确综合,
//可以用等值的reg 型变量来替代,即使你定义成整数型,实际上也是被综合成reg型的,
//另外,一般可综合代码中最好不要用for语句,个人认为你的代码会完全功能不正常的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)