当前位置: 首页 > news >正文

学习yosys(一款开源综合器)

安装

sudo apt-get install yosys		#ubuntu22.04仓库里面是yosys-0.9
sudo install xdot

创建脚本show_rtl.ys

read_verilog cpu.v
hierarchy -top cpu
proc; opt; fsm; opt; memory; opt;
show -prefix cpu

调用脚本

yosys show_rtl.ys

verilog代码

module cpu(input clk,input [15:0]op,     //[15:11]指令 [10:8]目标Reg索引 [7:0]立即数或源Reg索引output [7:0]R0      // R0-R7组织成寄存器组,  方便用寄存器索引 选择
);reg[7:0]R[7:0];
assign R0 = R[0];
reg [7:0] in1,in2, out1;
always @ (*) beginin1 = R[op[10:8]];in2 = op[11]? R[op[2:0]] : op[7:0];
endalways @ (*) begin case(op[15:12])0: out1 = in2;          // ldr1: out1 = in1 + in2;    // add2: out1 = in1 - in2;    // sub3: out1 = in1 & in2;    // and4: out1 = in1 | in2;    // or5: out1 = (in1 == in2);  // cmpdefault: out1 = 0;endcase
end// 3-8译码器
wire [7:0]sel;
always @(*) begincase(op[10:8])3'b000: sel = 8'b0000_0001;3'b001: sel = 8'b0000_0010;3'b010: sel = 8'b0000_0100;3'b011: sel = 8'b0000_1000;3'b100: sel = 8'b0001_0000;3'b101: sel = 8'b0010_0000;3'b110: sel = 8'b0100_0000;3'b111: sel = 8'b1000_0000;endcase
endalways @(posedge clk) beginif(sel[0]) R[0]=out1;if(sel[1]) R[1]=out1;if(sel[2]) R[2]=out1;if(sel[3]) R[3]=out1;if(sel[4]) R[4]=out1;if(sel[5]) R[5]=out1;if(sel[6]) R[6]=out1;if(sel[7]) R[7]=out1;else  R[7]=R[7]+1;
endendmodule

生成RTL图

http://www.lryc.cn/news/526400.html

相关文章:

  • 自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • 对于Docker的初步了解
  • C语言进阶——3字符函数和字符串函数(2)
  • 机器学习day3
  • 追剧记单词之:国色芳华与单词速记
  • AIGC浪潮下,图文内容社区数据指标体系构建探索
  • 总线、UART、IIC、SPI
  • 戴尔电脑设置u盘启动_戴尔电脑设置u盘启动多种方法
  • 【python】四帧差法实现运动目标检测
  • JVM学习指南(48)-JVM即时编译
  • office 2019 关闭word窗口后卡死未响应
  • [操作系统] 深入进程地址空间
  • CVE-2025-0411 7-zip 漏洞复现
  • leetcode151-反转字符串中的单词
  • 若依 v-hasPermi 自定义指令失效场景
  • vue3中自定一个组件并且能够用v-model对自定义组件进行数据的双向绑定
  • 使用 Python 和 Tesseract 实现验证码识别
  • 谈一谈前端构建工具的本地代理配置(Webpack与Vite)
  • CentOS7非root用户离线安装Docker及常见问题总结、各种操作系统docker桌面程序下载地址
  • Alibaba Spring Cloud 十三 Nacos,Gateway,Nginx 部署架构与负载均衡方案
  • +-*/运算符优先级计算模板
  • GPT 结束语设计 以nanogpt为例
  • FastDFS的安装及使用
  • C++ lambda表达式
  • react页面定时器调用一组多个接口,如果接口请求返回令牌失效,清除定时器不再触发这一组请求
  • Python的泛型(Generic)与协变(Covariant)
  • Python Typing: 实战应用指南
  • OpenEuler学习笔记(六):OpenEuler与其他Linux服务器的区别是什么?
  • 如何使用CRM数据分析和洞察来支持业务决策和市场营销?
  • MyBatis和JPA区别详解