网表的生成与使用
网表的生成
步骤一生成网表
1.如图所示是一个完整的工程,一个top层和一个例化的子函数
2.首先是把准备转化为网表的层设为顶层文件,如下图
3.按下图操作进入synthesize的Process Properties当中
4.将图中对用-iobuf取消,因为生成模块的网表文件不需要IOBUF
5.对该模块进行综合Synthesize,就可以在工程目录下找到该模块的网表文件.ngc
6.将原本该模块的.v文件改成只有输入输出端口的wrapper文件
源代码
`timescale 1ns / 1ps
module divde_clk(
input clk ,
input rst_n ,
output reg clk_1hz
);
//reg define
reg [25:0] clk_cnt ;
localparam Counter = 26'd50_000_000 ;
always @(posedge clk or negedge rst_n) begin
if(!rst_n)begin
clk_1hz <= 0 ;
clk_cnt <= 0 ;
end
else begin
if (clk_cnt == Counter/2-1) begin
clk_cnt <= 0 ;
clk_1hz <= ~clk_1hz ;
end
else begin
clk_cnt <= clk_cnt + 1 ;
clk_1hz <= clk_1hz ;
end
end
end
endmodule
Wrapper文件
`timescale 1ns / 1ps
module divde_clk(
input clk ,
input rst_n ,
output reg clk_1hz
);
endmodule
步骤二建立网表工程
1.将所需要的文件和单独提取出来再新建工程就可以建立网表工程了
2.将wrapper文件和顶层文件添加到新的工程中去
3.添加网表的方式有两种,一种直接和wrapper一起添加到工程中,二是将网表存放文件夹和implement相关联。
方式一:直接添加网表ngc文件
方式二:网表文件和和implement相关联。
在-sd 中的路径设为当前网表ngc文件存放的路径(弊端:若网表文件放在工程目录下,当工程移动时网网表文件的路径也会发生变化,需要重新设置,否则implement时会报错)。
最后添加约束文件后就可以进行,综合,实现,生成比特流了。