sky13笔记

devtools/2024/9/24 17:44:39/

1.generate用法
generate是物理上的展开,在compile时完成展开。
e.g.把array里面的每一项放入scale:

wire [7:0] array [0:7];
wire [8*8-1 :0]scale;
generate
genvar gen_x;
for(gen_x =0; gen_x <8; gen_x =gen_x +1)begin:gen_scaleassign scale[gen_x*8 +:8] = array[gen_x];//gen_x=0,从0往上8个bit
end//有*但是不用乘法器,compile时展开8遍
endgenerate//把array的8个8bit数放入[63:0]scale

2.例子:做2个16x16矩阵的减法。(对应位相减)

wire clk, rstn;
reg [7:0] a [15:0][15:0];
reg [7:0] b [15:0][15:0];
reg [8:0] sub [15:0][15:0];//减要考虑到结果为负,加1bit作为符号位。物理上会放置256个8bit减法器generate
genvar gen_x,gen_y;
for(gen_y =0; gen_y <16; gen_y =gen_y +1)begin :gen_sub_y//sim可以不取名,compile要取for(gen_x =0; gen_x <16; gen_x =gen_x +1)begin :gen_sub_xalways @(posedge clk or negative rstn)beginif(!rstn)sub[gen_y][gen_x] <= 'd0;elsesub[gen_y][gen_x] <= {1'b0, a[gen_y][gen_x]} - {1'b0,b[gen_y][gen_x]};endend
end
endgenerate

3.parameter:让IP方便配置不通应用

module myadd(a,b,sum);
parameter DWIDTH = 8;
input wire [DWIDTH-1 :0]a ,b;
output wire [DWIDTH :0] sum;
assign sum = {1'b0,a} + {1'b0,b};
endmodulemodule top();
wire [8:0] a9,b9;
wire [9:0] sum10;
wire [12:0] a13,b13;
wire [13:0] sum14;myadd #(.DWIDTH(9))u_add9b(
.a(a9),
.b(b9),
.sum(sum10));
myadd #(.DWIDTH(13))u_add13b(
.a(a13),
.b(b13),
.sum(sum14));
endmodule

4.参数化SP-SRAM模型
在这里插入图片描述
FPGA工具自动推断这是个ram,但是asic就不行,它必须要用memory compile生成,因为不知道工艺库(28nm or 40nm, tsmc台积电 or smic中芯国际)
5.为什么要定义阻塞赋值,非阻塞赋值?
硬件行为本身是并行的,而CPU是串行行为,为了用串行行为去仿真并行行为,规定了阻塞/非阻塞赋值。
可综合Verilog建议:
定义成reg的组合逻辑,用=赋值;
定义成reg的时序逻辑,用<=赋值。
详细参考
Pattern输出给DUT的信号最好不要跟clk对齐,在tb顶层故意加一个#0.1。


http://www.ppmy.cn/devtools/23649.html

相关文章

vue3使用echarts做树图tree

vue3使用echarts做树图tree 1.安装echarts npm install echarts --save2.在main.js引入 import * as echarts from echarts // 全局方法 app.config.globalProperties.$echarts echarts3.使用 <div id"myChart" :style"{ width: 1000px, height: 1000px …

信号分解 | SSA(奇异谱分析)-Matlab

分解效果 SSA(奇异谱分析) 信号分解 | SSA(奇异谱分析)-Matlab 奇异谱分析(Singular Spectrum Analysis,简称SSA)是一种用于时间序列分析的方法。它可以用于数据降维、信号分解、噪声去除和预测等应用。 SSA的基本思想是将时间序列分解为若干个成分,每个成分代表着不同的…

【Redis | 第十篇】Redis与MySQL保证数据一致性(两种解决思路)

文章目录 10.Redis和MySQL如何保证数据一致性10.1双写一致性问题10.2数据高度一致性10.3数据同步允许延时10.3.1中间件通知10.3.2延迟双删 10.Redis和MySQL如何保证数据一致性 10.1双写一致性问题 Redis作为缓存&#xff0c;它是如何与MySQL的数据保持同步的呢&#xff1f;特…

基于知识图谱的大学生就业能力评价和职位推荐系统——超详细要点总结(创作不易,还请点赞)

1. 职位节点&#xff08;Position&#xff09;&#xff1a; 软件工程师 数据科学家 系统架构师 网络安全专家 人工智能工程师 嵌入式系统工程师 物联网工程师 大数据工程师 前端/后端开发工程师 云计算工程师 区块链工程师 自然语言处理专家 软件测试工程师 人机交…

【智能优化算法】樽海鞘群算法(Salp Swarm Algorithm,SSA)

樽海鞘群算法(Salp Swarm Algorithm&#xff0c;SSA)是期刊“Advances in Engineering Software ”&#xff08;中科院二区&#xff0c;IF 7.0&#xff09;的2017年智能优化算法 01.引言 樽海鞘群算法(Salp Swarm Algorithm&#xff0c;SSA)&#xff0c;用于解决单目标的优化问…

笔记:能量谱密度与功率谱密度(二)

目录 一、ESD与PSD的定义、单位、性质 二、对ESD与PSD的直观理解 三、总结&#xff1a; 某物理量的“分布”在离散系统中&#xff0c;各点(纵坐标含义&#xff09;的物理意义仍然是该物理量&#xff0c;而在连续系统中&#xff0c;各点&#xff08;纵坐标含义&#xff09;的物…

【C++初阶】string

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

php基本语法介绍

PHP是一种广泛使用的服务器端脚本语言&#xff0c;特别适合于Web开发。以下是PHP的一些基本语法介绍&#xff1a; 标记&#xff1a; PHP代码被包含在<?php和?>标记之间。这些标记告诉服务器开始和结束PHP代码块。 <?php // PHP代码在这里 ?>注释&#xff1a;…