Verilog:for循环的综合实现

1.采用for循环来计算1的数量采用for循环语句,逐个bit位判断是否为1,为1则累加,否则保持不变,最终输出输入信号中1的数量。
module try_top #( parameter data_width = 8 , // parameter cnt_width = ($clog2(data_width)+1) //)( input clk , // input rst_n , // input [data_width-1:0] data_in , // output reg [cnt_width-1:0] one_cnt //);always@(*) begin one_cnt = 'b0 ; for(int i=0; i< data_width;i=i+1) begin : one_cnt_gen if(data_in[i]) one_cnt = one_cnt + 1'b1 ; else one_cnt = one_cnt ; endendendmodule综合实现--实际就是一团组合逻辑
module try_top ( clk, rst_n, data_in, one_cnt );input [7:0] data_in;output [3:0] one_cnt;input clk, rst_n;wire n12, n13, n14, n15, n16, n17, n18, n19, n20, n21, n22;nand3_x1n_*cell_type* u12 ( .a(n22), .b(n14), .c(n13), .y(n20) );and2_x1n_*cell_type* u13 ( .a(n14), .b(n13), .y(n21) );oa1b2_x1n_*cell_type* u14 ( .b0(n14), .b1(n13), .a0n(n21), .y(one_cnt[0]) );addf_x1n_*cell_type* u15 ( .a(data_in[7]), .b(data_in[6]), .ci(n12), .co(n17), .s(n14) );addf_x1n_*cell_type* u16 ( .a(data_in[1]), .b(data_in[0]), .ci(data_in[2]), .co(n16), .s(n12) );addf_x1n_*cell_type* u17 ( .a(data_in[3]), .b(data_in[5]), .ci(data_in[4]), .co(n15), .s(n13) );addf_x1n_*cell_type* u18 ( .a(n17), .b(n16), .ci(n15), .co(n18), .s(n22) );invp_x1r_*cell_type* u19 ( .a(n18), .y(n19) );nor2_x1f_*cell_type* u20 ( .a(n20), .b(n19), .y(one_cnt[3]) );aoi21_x1n_*cell_type* u21 ( .a0(n20), .a1(n19), .b0(one_cnt[3]), .y(one_cnt[2]) );oa21_x1n_*cell_type* u22 ( .a0(n22), .a1(n21), .b0(n20), .y(one_cnt[1]) );endmodule
2.综合实现解读综合工具基本原理也是for循环不断计算,提取电路结构,只不过最后一级for循环的电路结果会覆盖之前的计算结果,for循环结束,电路结构也就确定了。
因此综合工具要求for循环的次数一定是固定值,而不能是个变量。
此处需要注意的是:除了协议中明确规定是属于测试类的语法格式,其他语法格式理论上都是可以综合的,关键在于综合工具是否支持。所以是否可综合完全取决于综合工具的版本迭代。
3.人工实现解读刚才说过了综合工具的实现方式,接下来我们试试人工翻译for循环。
为了简化分析流程,以data_width为2为例进行讲解。首先进行穷举操作,列出所有的情况,因为dat_in只有2bit,所以本案例中只有4种情况,然后计算cnt_one的表达式,将cnt_one的表达式进行逻辑化简,最终得出电路图。

如何实现电源应用的散热仿真
浅析无线应变仪模块的远程应用
摩尔定律的终结篇:英特尔受困 NVIDIA反受益
香奈儿宣布不再使用珍稀动物皮
这款SUV花百亿经费研发,却只卖18万?传祺GS8、吉利博越、荣威RX5都不是对手!
Verilog:for循环的综合实现
vivo冲上销量冠军 荣耀迎来全球化加速年
首个2nm芯片定了!富士通自研CPU将由台积电生产
50年过去了,我国传感器与国外差距竟然还有这么大?
中国手机占据印度市场近7成份额,小米稳坐第一位
“精准创新 尽显创境”——艾迈斯欧司朗CIOE光博会展位直击
modbus开关量采集模块参数配置的方法
利用高增益运放实现测量放大器的设计和提高性能指标
荣耀9什么时候上市?荣耀9最新消息:前后双摄+正面指纹+三防性能,仅售2599元
附有传感器的机器人如何协助医生
一种新型多功能顺时控制系统的设计?
ADAS(驾驶员辅助)最新趋势的讨论
体验鸿蒙操作系统——CH32V208
重庆邮电大学已成功研发第三代半导体氮化镓功率芯片
瑞屏激光大屏幕迈入真正的无缝化时代