added 74181 verilog sources
diff --git a/info.yaml b/info.yaml
index 65e82e8..feac095 100644
--- a/info.yaml
+++ b/info.yaml
@@ -1,11 +1,10 @@
---
# TinyTapeout project information
project:
- wokwi_id: 334445762078310996 # If using wokwi, set this to your project's ID
-# source_files: # If using an HDL, set wokwi_id as 0 and uncomment and list your source files here
-# - verilog/rtl/counter.v
-# - verilog/rtl/decoder.v
-# top_module: "seven_segment_seconds" # put the name of your top module here, make it unique by prepending your github username
+ wokwi_id: 0 # If using wokwi, set this to your project's ID
+ source_files: # If using an HDL, set wokwi_id as 0 and uncomment and list your source files here
+ - verilog/rtl/alu74181.v
+ top_module: "thorkn_alu74181_top" # put the name of your top module here, make it unique by prepending your github username
# As everyone will have access to all designs, try to make it easy for someone new to your design to know what
# it does and how to operate it.
@@ -21,7 +20,7 @@
how_it_works: "" # Longer description of how the project works
how_to_test: "" # Instructions on how someone could test your project, include things like what buttons do what and how to set the clock if needed
external_hw: "" # Describe any external hardware needed
- language: "wokwi" # other examples include Verilog, Amaranth, VHDL, etc
+ language: "Verilog" # other examples include Verilog, Amaranth, VHDL, etc
doc_link: "" # URL to longer form documentation, eg the README.md in your repository
clock_hz: 0 # Clock frequency in Hz (if required) we are expecting max clock frequency to be ~6khz. Provided on input 0.
picture: "" # relative path to a picture in your repository
diff --git a/verilog/rtl/alu74181.v b/verilog/rtl/alu74181.v
new file mode 100644
index 0000000..4bdf15a
--- /dev/null
+++ b/verilog/rtl/alu74181.v
@@ -0,0 +1,99 @@
+/*************************************************************************/
+/* 74181 - A historic 4 bit ALU */
+/*************************************************************************/
+
+module thorkn_alu74181_top (
+
+ input [13:0] in,
+ output [7:0] out,
+);
+
+ top_alu74181 top_alu74181 (in[3:0], in[7:4], in[11:8], in[12], in[13], out[3:0], out[4], out[5], out[6], out[7]);
+ /************************** A , B , S , CNb , M , F , AEB , X , Y , CN4b */
+endmodule
+
+/*************************************************************************/
+
+module top_alu74181 (
+
+ input [3:0] A, B, S,
+ input CNb, M,
+ output [3:0] F,
+ output AEB, X, Y, CN4b
+);
+
+ wire [3:0] E, D, C, Bb;
+
+ e_module e_mod (A, B, S, E);
+ d_module d_mod (A, B, S, D);
+ cla_module cla_mod (E, D, CNb, C, X, Y, CN4b);
+ sum_module sum_mod (E, D, C, M, F, AEB);
+
+endmodule
+
+/*************************************************************************/
+
+module e_module (
+
+ input [3:0] A, B, S,
+ output [3:0] E
+);
+
+ wire [3:0] ABS3, ABbS2;
+
+ assign ABS3 = A&B&{4{S[3]}};
+ assign ABbS2 = A&~B&{4{S[2]}};
+ assign E = ~(ABS3|ABbS2);
+
+endmodule
+
+/*************************************************************************/
+
+module d_module (
+
+ input [3:0] A, B, S,
+ output [3:0] D
+);
+
+ wire [3:0] BbS1, BS0;
+
+ assign BbS1 = ~B&{4{S[1]}};
+ assign BS0 = B&{4{S[0]}};
+ assign D = ~(BbS1|BS0|A);
+
+endmodule
+
+/*************************************************************************/
+
+module cla_module (
+
+ input [3:0] Gb, Pb,
+ input CNb,
+ output [3:0] C,
+ output X, Y, CN4b
+);
+
+ assign C[0] = ~CNb;
+ assign C[1] = ~(Pb[0]|(CNb&Gb[0]));
+ assign C[2] = ~(Pb[1]|(Pb[0]&Gb[1])|(CNb&Gb[0]&Gb[1]));
+ assign C[3] = ~(Pb[2]|(Pb[1]&Gb[2])|(Pb[0]&Gb[1]&Gb[2])|(CNb&Gb[0]&Gb[1]&Gb[2]));
+ assign X = ~&Gb;
+ assign Y = ~(Pb[3]|(Pb[2]&Gb[3])|(Pb[1]&Gb[2]&Gb[3])|(Pb[0]&Gb[1]&Gb[2]&Gb[3]));
+ assign CN4b = ~(Y&~(&Gb&CNb));
+
+endmodule
+
+/*************************************************************************/
+
+module sum_module (
+
+ input [3:0] E, D, C,
+ input M,
+ output [3:0] F,
+ output AEB
+);
+
+ assign F = (E ^ D) ^ (C|{4{M}});
+ assign AEB = &F;
+
+endmodule