mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Chisel -> Firrtl -> Verilog -> Firrtl -> Verilog is successful for a simple rocket-chip design.
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Verilog
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Verilog
		
	
	
	
	
	
| module test(
 | |
| 	input clk, wen,
 | |
| 	input [7:0] uns,
 | |
| 	input signed [7:0] a, b,
 | |
| 	input signed [23:0] c,
 | |
| 	input signed [2:0] sel,
 | |
| 	output [15:0] s, d, y, z, u, q, p, mul, div, mod, mux, And, Or, Xor, eq, neq, gt, lt, geq, leq, eqx, shr, sshr, shl, sshl, Land, Lor, Lnot, Not, Neg, pos, Andr, Orr, Xorr, Xnorr, Reduce_bool,
 | |
|         output [7:0] PMux
 | |
| );
 | |
|         //initial begin
 | |
|           //$display("shr = %b", shr);
 | |
|         //end
 | |
| 	assign s = a+{b[6:2], 2'b1};
 | |
| 	assign d = a-b;
 | |
| 	assign y = x;
 | |
| 	assign z[7:0] = s+d;
 | |
| 	assign z[15:8] = s-d;
 | |
|         assign p = a & b | x;
 | |
|         assign mul = a * b;
 | |
|         assign div = a / b;
 | |
|         assign mod = a % b;
 | |
|         assign mux = x[0] ? a : b;
 | |
|         assign And = a & b;
 | |
|         assign Or = a | b;
 | |
|         assign Xor = a ^ b;
 | |
|         assign Not = ~a;
 | |
|         assign Neg = -a;
 | |
|         assign eq = a == b;
 | |
|         assign neq = a != b;
 | |
|         assign gt = a > b;
 | |
|         assign lt = a < b;
 | |
|         assign geq = a >= b;
 | |
|         assign leq = a <= b;
 | |
|         assign eqx = a === b;
 | |
|         assign shr = a >> b; //0111111111000000
 | |
|         assign sshr = a >>> b;
 | |
|         assign shl = a << b;
 | |
|         assign sshl = a <<< b;
 | |
|         assign Land = a && b;
 | |
|         assign Lor = a || b;
 | |
|         assign Lnot = !a;
 | |
|         assign pos = $signed(uns);
 | |
|         assign Andr = &a;
 | |
|         assign Orr = |a;
 | |
|         assign Xorr = ^a;
 | |
|         assign Xnorr = ~^a;
 | |
|         always @*
 | |
|           if(!a) begin
 | |
|              Reduce_bool = a;
 | |
|           end else begin
 | |
|              Reduce_bool = b;
 | |
|           end
 | |
|         //always @(sel or c or a)
 | |
|         //  begin
 | |
|         //    case (sel)
 | |
|         //      3'b000: PMux = a;
 | |
|         //      3'b001: PMux = c[7:0];
 | |
|         //      3'b010: PMux = c[15:8];
 | |
|         //      3'b100: PMux = c[23:16];
 | |
|         //    endcase
 | |
|         //  end
 | |
| 
 | |
| endmodule
 |