学习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组织成https://zhida.zhihu.com/search?content_id=253065908&content_type=Article&match_order=1&q=%E5%AF%84%E5%AD%98%E5%99%A8&zhida_source=entity组,  方便用寄存器索引 选择
);

reg[7:0]R[7:0];
assign R0 = R[0];
reg [7:0] in1,in2, out1;
always @ (*) begin
    in1 = R[op[10:8]];
    in2 = op[11]? R[op[2:0]] : op[7:0];
end

always @ (*) begin 
    case(op[15:12])
        0: out1 = in2;          // ldr
        1: out1 = in1 + in2;    // add
        2: out1 = in1 - in2;    // sub
        3: out1 = in1 & in2;    // and
        4: out1 = in1 | in2;    // or
        5: out1 = (in1 == in2);  // cmp
        default: out1 = 0;
    endcase
end

// 3-8https://zhida.zhihu.com/search?content_id=253065908&content_type=Article&match_order=1&q=%E8%AF%91%E7%A0%81%E5%99%A8&zhida_source=entity
wire [7:0]sel;
always @(*) begin
    case(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
end

always @(posedge clk) begin
    if(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;
end

endmodule

生成RTL图

相关推荐
tiantianuser1 小时前
NVMe简介1
fpga开发·nvme·可编程逻辑·verilogy
FPGA_ADDA2 小时前
基于RFSOC ZU28DR+DSP 6U VPX处理板
fpga开发·dsp·rfsoc28dr·zu28dr·射频采集
搬砖的小码农_Sky5 小时前
FPGA: Xilinx Kintex 7实现PCIe接口
fpga开发·硬件架构·硬件工程
9527华安5 小时前
紫光同创FPGA实现AD9280数据采集转UDP网络传输,分享PDS工程源码和技术支持和QT上位机
网络·fpga开发·udp·紫光同创·qt上位机·ad9280
9527华安1 天前
紫光同创FPGA实现AD7606数据采集转UDP网络传输,提供PDS工程源码和技术支持和QT上位机
网络·qt·fpga开发·udp·紫光同创·ad7606
szxinmai主板定制专家1 天前
基于TI AM6442+FPGA解决方案,支持6网口,4路CAN,8个串口
arm开发·人工智能·fpga开发
7yewh1 天前
FPGA前瞻篇-计数器设计与实现实例
arm开发·驱动开发·嵌入式硬件·fpga开发·硬件架构·硬件工程·精益工程
爱学习的张哥1 天前
UDP--DDR--SFP,FPGA实现之指令监测模块实现
fpga开发·udp·指令
碎碎思1 天前
FPGA+ESP32 = GameBoy 是你的童年吗?
fpga开发
搬砖的小码农_Sky1 天前
FPGA:XILINX FPGA产品线以及器件选型建议
嵌入式硬件·fpga开发·硬件架构·硬件工程