@@ -0,0 +1,172 @@
1+[38;2;117;113;94m//[0m[38;2;117;113;94m Copyright 2018 Schuyler Eldridge[0m
2+[38;2;117;113;94m//[0m
3+[38;2;117;113;94m//[0m[38;2;117;113;94m Licensed under the Apache License, Version 2.0 (the "License");[0m
4+[38;2;117;113;94m//[0m[38;2;117;113;94m you may not use this file except in compliance with the License.[0m
5+[38;2;117;113;94m//[0m[38;2;117;113;94m You may obtain a copy of the License at[0m
6+[38;2;117;113;94m//[0m
7+[38;2;117;113;94m//[0m[38;2;117;113;94m http://www.apache.org/licenses/LICENSE-2.0[0m
8+[38;2;117;113;94m//[0m
9+[38;2;117;113;94m//[0m[38;2;117;113;94m Unless required by applicable law or agreed to in writing, software[0m
10+[38;2;117;113;94m//[0m[38;2;117;113;94m distributed under the License is distributed on an "AS IS" BASIS,[0m
11+[38;2;117;113;94m//[0m[38;2;117;113;94m WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.[0m
12+[38;2;117;113;94m//[0m[38;2;117;113;94m See the License for the specific language governing permissions and[0m
13+[38;2;117;113;94m//[0m[38;2;117;113;94m limitations under the License.[0m
14+
15+[38;2;117;113;94m//[0m[38;2;117;113;94m Implements a fixed-point parameterized pipelined division[0m
16+[38;2;117;113;94m//[0m[38;2;117;113;94m operation. Outputs are expected to be on range [-1,1), techincally[0m
17+[38;2;117;113;94m//[0m[38;2;117;113;94m [-1,2^(BITS-1)-1/2^(BITS-1)]. There is no convergent rounding.[0m
18+[38;2;117;113;94m//[0m
19+[38;2;117;113;94m//[0m[38;2;117;113;94m [TODO] Implement optional convergent rounding and some form of[0m
20+[38;2;117;113;94m//[0m[38;2;117;113;94m variable output binary point placement. There are arguments in[0m
21+[38;2;117;113;94m//[0m[38;2;117;113;94m these changes that make sense (specifically, adding an additional[0m
22+[38;2;117;113;94m//[0m[38;2;117;113;94m bit results in a gain of one value when all the other 2^6 values[0m
23+[38;2;117;113;94m//[0m[38;2;117;113;94m greater than 1 aren't used). Other improvements that are needed: 1)[0m
24+[38;2;117;113;94m//[0m[38;2;117;113;94m quotient_gen is getting smaller by one bit in every stage, it would[0m
25+[38;2;117;113;94m//[0m[38;2;117;113;94m make more sense to generate this as such, 2) there's some weird[0m
26+[38;2;117;113;94m//[0m[38;2;117;113;94m initial behavior after rst_n is deasserted, you get weird output on[0m
27+[38;2;117;113;94m//[0m[38;2;117;113;94m the quotient line for a number of cycles.[0m
28+[38;2;117;113;94m//[0m
29+[38;2;117;113;94m//[0m[38;2;117;113;94m [TODO] This doesn't exactly behave as expected if you specify[0m
30+[38;2;117;113;94m//[0m[38;2;117;113;94m different BITS and STAGES parameters (which for a functional[0m
31+[38;2;117;113;94m//[0m[38;2;117;113;94m module, should be implemented). Note, that this technically works,[0m
32+[38;2;117;113;94m//[0m[38;2;117;113;94m but needs more investigation to fully understand its properties.[0m
33+
34+[38;2;190;132;255m`timescale[0m[38;2;248;248;242m 1ns [0m[38;2;249;38;114m/[0m[38;2;248;248;242m 1ps[0m
35+[3;38;2;102;217;239mmodule[0m[38;2;248;248;242m [0m[38;2;166;226;46mdiv_pipelined[0m
36+[38;2;248;248;242m [0m[38;2;249;38;114m([0m
37+[38;2;248;248;242m [0m[3;38;2;166;226;46minput[0m[38;2;248;248;242m clk[0m[38;2;249;38;114m,[0m
38+[38;2;248;248;242m [0m[3;38;2;166;226;46minput[0m[38;2;248;248;242m rst_n[0m[38;2;249;38;114m,[0m
39+[38;2;248;248;242m [0m[3;38;2;166;226;46minput[0m[38;2;248;248;242m start[0m[38;2;249;38;114m,[0m
40+[38;2;248;248;242m [0m[3;38;2;166;226;46minput[0m[38;2;248;248;242m [0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m dividend[0m[38;2;249;38;114m,[0m
41+[38;2;248;248;242m [0m[3;38;2;166;226;46minput[0m[38;2;248;248;242m [0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m divisor[0m[38;2;249;38;114m,[0m
42+[38;2;248;248;242m [0m[3;38;2;166;226;46moutput[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mreg[0m[38;2;248;248;242m data_valid[0m[38;2;249;38;114m,[0m
43+[38;2;248;248;242m [0m[3;38;2;166;226;46moutput[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mreg[0m[38;2;248;248;242m div_by_zero[0m[38;2;249;38;114m,[0m
44+[38;2;248;248;242m [0m[3;38;2;166;226;46moutput[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mreg[0m[38;2;248;248;242m [0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m quotient[0m
45+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m output reg [7:0] quotient_correct[0m
46+[38;2;248;248;242m [0m[38;2;249;38;114m)[0m[38;2;249;38;114m;[0m
47+
48+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m WARNING!!! THESE PARAMETERS ARE INTENDED TO BE MODIFIED IN A TOP[0m
49+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m LEVEL MODULE. LOCAL CHANGES HERE WILL, MOST LIKELY, BE[0m
50+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m OVERWRITTEN![0m
51+[38;2;248;248;242m [0m[3;38;2;102;217;239mparameter[0m
52+[38;2;248;248;242m BITS [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m8[0m[38;2;249;38;114m,[0m
53+[38;2;248;248;242m STAGES [0m[38;2;249;38;114m=[0m[38;2;248;248;242m BITS[0m[38;2;249;38;114m;[0m
54+
55+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m y = a/bQ[0m
56+
57+[38;2;248;248;242m [0m[3;38;2;102;217;239mreg[0m[38;2;248;248;242m [0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m start_gen[0m[38;2;249;38;114m,[0m[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m,[0m[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m;[0m
58+[38;2;248;248;242m [0m[3;38;2;102;217;239mreg[0m[38;2;248;248;242m [0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m,[0m[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m,[0m[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m;[0m
59+[38;2;248;248;242m [0m[3;38;2;102;217;239mwire[0m[38;2;248;248;242m [0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m pad_dividend[0m[38;2;249;38;114m;[0m
60+[38;2;248;248;242m [0m[3;38;2;102;217;239mwire[0m[38;2;248;248;242m [0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m pad_divisor[0m[38;2;249;38;114m;[0m
61+
62+[38;2;248;248;242m [0m[38;2;249;38;114massign[0m[38;2;248;248;242m pad_dividend [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
63+[38;2;248;248;242m [0m[38;2;249;38;114massign[0m[38;2;248;248;242m pad_divisor [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
64+
65+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m sign conversion stage[0m
66+[38;2;248;248;242m [0m[38;2;249;38;114malways[0m[38;2;248;248;242m [0m[38;2;249;38;114m@[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114mposedge[0m[38;2;248;248;242m clk [0m[3;38;2;166;226;46mor[0m[38;2;248;248;242m [0m[38;2;249;38;114mnegedge[0m[38;2;248;248;242m rst_n[0m[38;2;249;38;114m)[0m
67+[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
68+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114m![0m[38;2;248;248;242mrst_n[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
69+[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
70+[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
71+[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
72+[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
73+[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
74+[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
75+[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mdivisor [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m)[0m[38;2;249;38;114m;[0m
76+[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m start[0m[38;2;249;38;114m;[0m
77+[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m dividend[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m^[0m[38;2;248;248;242m divisor[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
78+[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mdividend[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m?[0m[38;2;248;248;242m [0m[38;2;249;38;114m~[0m[38;2;249;38;114m{[0m[38;2;248;248;242mdividend[0m[38;2;249;38;114m,[0m[38;2;248;248;242mpad_dividend[0m[38;2;249;38;114m}[0m[38;2;248;248;242m [0m[38;2;249;38;114m+[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[38;2;249;38;114m{[0m[38;2;248;248;242mdividend[0m[38;2;249;38;114m,[0m[38;2;248;248;242mpad_dividend[0m[38;2;249;38;114m}[0m[38;2;249;38;114m;[0m
79+[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mdivisor [0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m?[0m[38;2;248;248;242m [0m[38;2;249;38;114m~[0m[38;2;249;38;114m{[0m[38;2;190;132;255m1'b1[0m[38;2;249;38;114m,[0m[38;2;248;248;242mdivisor[0m[38;2;249;38;114m,[0m[38;2;248;248;242m pad_divisor[0m[38;2;249;38;114m}[0m[38;2;248;248;242m [0m[38;2;249;38;114m+[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m [0m[38;2;249;38;114m{[0m[38;2;190;132;255m1'b0[0m[38;2;249;38;114m,[0m[38;2;248;248;242mdivisor[0m[38;2;249;38;114m,[0m[38;2;248;248;242m pad_divisor[0m[38;2;249;38;114m}[0m[38;2;249;38;114m;[0m
80+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
81+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
82+
83+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m first computation stage[0m
84+[38;2;248;248;242m [0m[38;2;249;38;114malways[0m[38;2;248;248;242m [0m[38;2;249;38;114m@[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114mposedge[0m[38;2;248;248;242m clk [0m[3;38;2;166;226;46mor[0m[38;2;248;248;242m [0m[38;2;249;38;114mnegedge[0m[38;2;248;248;242m rst_n[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
85+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114m![0m[38;2;248;248;242mrst_n[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
86+[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
87+[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
88+[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
89+[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
90+[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
91+[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
92+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
93+[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
94+[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
95+[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
96+[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
97+[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m>[0m[38;2;249;38;114m>[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114m;[0m
98+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m>=[0m[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
99+[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;249;38;114m<[0m[38;2;249;38;114m<[0m[38;2;248;248;242m STAGES [0m[38;2;249;38;114m-[0m[38;2;248;248;242m [0m[38;2;190;132;255m2[0m[38;2;249;38;114m;[0m
100+[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m-[0m[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
101+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
102+[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
103+[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
104+[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;190;132;255m0[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
105+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
106+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m else: !if(!rst_n)[0m
107+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m always @ (posedge clk)[0m
108+
109+[38;2;248;248;242m [0m[38;2;249;38;114mgenerate[0m
110+[38;2;248;248;242m [0m[38;2;249;38;114mgenvar[0m[38;2;248;248;242m i[0m[38;2;249;38;114m;[0m
111+[38;2;248;248;242m [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mi [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114m;[0m[38;2;248;248;242m i [0m[38;2;249;38;114m<[0m[38;2;248;248;242m STAGES [0m[38;2;249;38;114m-[0m[38;2;248;248;242m [0m[38;2;190;132;255m2[0m[38;2;249;38;114m;[0m[38;2;248;248;242m i [0m[38;2;249;38;114m=[0m[38;2;248;248;242m i [0m[38;2;249;38;114m+[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m pipeline[0m
112+[38;2;248;248;242m [0m[38;2;249;38;114malways[0m[38;2;248;248;242m [0m[38;2;249;38;114m@[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114mposedge[0m[38;2;248;248;242m clk [0m[3;38;2;166;226;46mor[0m[38;2;248;248;242m [0m[38;2;249;38;114mnegedge[0m[38;2;248;248;242m rst_n[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
113+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114m![0m[38;2;248;248;242mrst_n[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
114+[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
115+[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
116+[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
117+[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
118+[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
119+[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
120+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
121+[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
122+[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
123+[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
124+[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
125+[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m>[0m[38;2;249;38;114m>[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114m;[0m
126+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mdividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m>=[0m[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
127+[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m|[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;249;38;114m<[0m[38;2;249;38;114m<[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m-[0m[38;2;248;248;242mi[0m[38;2;249;38;114m)[0m[38;2;249;38;114m)[0m[38;2;249;38;114m;[0m
128+[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m-[0m[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
129+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
130+[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
131+[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
132+[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mi[0m[38;2;249;38;114m+[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;248;248;242mi[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
133+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
134+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m else: !if(!rst_n)[0m
135+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m always @ (posedge clk or negedge rst_n)[0m
136+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m block: pipeline[0m
137+[38;2;248;248;242m [0m[38;2;249;38;114mendgenerate[0m
138+
139+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m last computation stage[0m
140+[38;2;248;248;242m [0m[38;2;249;38;114malways[0m[38;2;248;248;242m [0m[38;2;249;38;114m@[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114mposedge[0m[38;2;248;248;242m clk [0m[3;38;2;166;226;46mor[0m[38;2;248;248;242m [0m[38;2;249;38;114mnegedge[0m[38;2;248;248;242m rst_n[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
141+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114m![0m[38;2;248;248;242mrst_n[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
142+[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
143+[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
144+[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
145+[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
146+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
147+[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
148+[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
149+[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
150+[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m negative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
151+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242m dividend_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m>=[0m[38;2;248;248;242m divisor_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m)[0m
152+[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m3[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m|[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114m;[0m
153+[38;2;248;248;242m [0m[38;2;249;38;114melse[0m
154+[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m3[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
155+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m else: !if(!rst_n)[0m
156+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m always @ (posedge clk)[0m
157+
158+[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m sign conversion stage[0m
159+[38;2;248;248;242m [0m[38;2;249;38;114malways[0m[38;2;248;248;242m [0m[38;2;249;38;114m@[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114mposedge[0m[38;2;248;248;242m clk [0m[3;38;2;166;226;46mor[0m[38;2;248;248;242m [0m[38;2;249;38;114mnegedge[0m[38;2;248;248;242m rst_n[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
160+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;249;38;114m![0m[38;2;248;248;242mrst_n[0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
161+[38;2;248;248;242m div_by_zero [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
162+[38;2;248;248;242m data_valid [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
163+[38;2;248;248;242m quotient [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;249;38;114m;[0m
164+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
165+[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;249;38;114mbegin[0m
166+[38;2;248;248;242m div_by_zero [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m div_by_zero_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
167+[38;2;248;248;242m data_valid [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m start_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
168+[38;2;248;248;242m quotient [0m[38;2;249;38;114m<=[0m[38;2;248;248;242m [0m[38;2;249;38;114m([0m[38;2;248;248;242mnegative_quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m][0m[38;2;249;38;114m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m?[0m[38;2;248;248;242m [0m[38;2;249;38;114m~[0m[38;2;248;248;242mquotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;248;248;242m [0m[38;2;249;38;114m+[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;249;38;114m:[0m[38;2;248;248;242m quotient_gen[0m[38;2;249;38;114m[[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m)[0m[38;2;249;38;114m-[0m[38;2;190;132;255m1[0m[38;2;249;38;114m:[0m[38;2;248;248;242mBITS[0m[38;2;249;38;114m*[0m[38;2;190;132;255m2[0m[38;2;249;38;114m*[0m[38;2;249;38;114m([0m[38;2;248;248;242mSTAGES[0m[38;2;249;38;114m-[0m[38;2;190;132;255m2[0m[38;2;249;38;114m)[0m[38;2;249;38;114m][0m[38;2;249;38;114m;[0m
169+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
170+[38;2;248;248;242m [0m[38;2;249;38;114mend[0m
171+
172+[3;38;2;102;217;239mendmodule[0m