merge of prims
This commit is contained in:
		| @@ -78,8 +78,8 @@ namespace tmpl { | |||||||
|               [(&i:M: d.d[i].t | d.d[i].f)]; |               [(&i:M: d.d[i].t | d.d[i].f)]; | ||||||
|               self := 0; |               self := 0; | ||||||
|               (;i:M: [ d.d[i].t -> self := self | (1 << i) |               (;i:M: [ d.d[i].t -> self := self | (1 << i) | ||||||
|         	     [] else -> skip |                [] else -> skip | ||||||
|         	     ] |                ] | ||||||
|               ) |               ) | ||||||
|             } |             } | ||||||
|          |          | ||||||
| @@ -117,8 +117,8 @@ namespace tmpl { | |||||||
|  |  | ||||||
|  |  | ||||||
|             BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss); |             BUF_X1 reset_buf(.a=reset_B, .y=_reset_BX,.vdd=supply.vdd,.vss=supply.vss); | ||||||
| 	          sigbuf<N> reset_bufarray(.in=_reset_BX, .out=_reset_BXX); |             sigbuf<N> reset_bufarray(.in=_reset_BX, .out=_reset_BXX); | ||||||
| 	     |        | ||||||
|             //validity |             //validity | ||||||
|             bool _in_v; |             bool _in_v; | ||||||
|             vtree<N> vc(.in=in.d,.out=_in_v,.supply=supply); |             vtree<N> vc(.in=in.d,.out=_in_v,.supply=supply); | ||||||
| @@ -429,6 +429,7 @@ namespace tmpl { | |||||||
|             BUF_X1 c_buf_tk_inv(.a=cond_inv_t, .y=_c_tk_buf, .vss = supply.vss, .vdd = supply.vdd); |             BUF_X1 c_buf_tk_inv(.a=cond_inv_t, .y=_c_tk_buf, .vss = supply.vss, .vdd = supply.vdd); | ||||||
|             sigbuf<N> c_buf_d_inv(.in=cond_inv_f, .out=_c_d_buf, .supply=supply); |             sigbuf<N> c_buf_d_inv(.in=cond_inv_f, .out=_c_d_buf, .supply=supply); | ||||||
|             ] |             ] | ||||||
|  |  | ||||||
|              |              | ||||||
|             vtree<N> vc(.in=in.d,.out=_in_v,.supply=supply); |             vtree<N> vc(.in=in.d,.out=_in_v,.supply=supply); | ||||||
|              |              | ||||||
| @@ -844,57 +845,12 @@ defproc slice_data(avMx1of2<N> in; avMx1of2<std::min(N1,N)-std::max(N0,0)> out; | |||||||
|     // {N0 >= 0 : "N0 can be minimum 0!"}; |     // {N0 >= 0 : "N0 can be minimum 0!"}; | ||||||
|     // {N1 <= N : "N1 can be maximum N"}; |     // {N1 <= N : "N1 can be maximum N"}; | ||||||
|  |  | ||||||
|       export template<pint N; pint CONDITION_BIT> |  | ||||||
|         defproc demux_bit (avMx1of2<N+1> in; avMx1of2<N> out1; avMx1of2<N> out2; bool? reset_B; power supply) |  | ||||||
|         { |  | ||||||
|             demux<N> demux(.reset_B = reset_B, .out1=out1, .out2=out2); |  | ||||||
|     pint _N1, _N0; |     pint _N1, _N0; | ||||||
|       export template<pint N; pint CONDITION_BIT> |  | ||||||
|         defproc demux_bit (avMx1of2<N+1> in; avMx1of2<N> out1; avMx1of2<N> out2; bool? reset_B; power supply) |  | ||||||
|         { |  | ||||||
|             demux<N> demux(.reset_B = reset_B, .out1=out1, .out2=out2); |  | ||||||
|  |  | ||||||
|             in.d.d[CONDITION_BIT].f = demux.cond.d.d[0].f; |  | ||||||
|             in.d.d[CONDITION_BIT].t = demux.cond.d.d[0].t; |  | ||||||
|     _N1 = std::min(N1,N); |     _N1 = std::min(N1,N); | ||||||
|     _N0 = std::max(N0,0); |     _N0 = std::max(N0,0); | ||||||
|             in.d.d[CONDITION_BIT].f = demux.cond.d.d[0].f; |  | ||||||
|             in.d.d[CONDITION_BIT].t = demux.cond.d.d[0].t; |  | ||||||
|  |  | ||||||
|             in.v = demux.in.v; |  | ||||||
|             in.a = demux.in.a; |  | ||||||
|     BUF_X1 ack_buf(.a = out.a, .y = in.a, .vss = supply.vss, .vdd = supply.vdd); |     BUF_X1 ack_buf(.a = out.a, .y = in.a, .vss = supply.vss, .vdd = supply.vdd); | ||||||
|             in.v = demux.in.v; |  | ||||||
|             in.a = demux.in.a; |  | ||||||
|  |  | ||||||
|  |  | ||||||
|             (i:0..CONDITION_BIT: |  | ||||||
|                 in.d.d[i].f = demux.in.d.d[i].f; |  | ||||||
|                 in.d.d[i].t = demux.in.d.d[i].t;) |  | ||||||
|  |  | ||||||
|             (i:CONDITION_BIT..N-1: |  | ||||||
|                 in.d.d[i].f = demux.in.d.d[i].f; |  | ||||||
|                 in.d.d[i].t = demux.in.d.d[i].t;) |  | ||||||
|  |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|       export template<pint N> |  | ||||||
|         defproc demux_bit_msb (avMx1of2<N+1> in; avMx1of2<N> out1; avMx1of2<N> out2; bool? reset_B; power supply) |  | ||||||
|         { |  | ||||||
|             demux<N> demux(.reset_B = reset_B, .out1=out1, .out2=out2); |  | ||||||
|  |  | ||||||
|             in.d.d[N+1].f = demux.cond.d.d[0].f; |  | ||||||
|             in.d.d[N+1].t = demux.cond.d.d[0].t; |  | ||||||
|  |  | ||||||
|             in.v = demux.in.v; |  | ||||||
|             in.a = demux.in.a; |  | ||||||
|  |  | ||||||
|  |  | ||||||
|             (i:0..N: |  | ||||||
|                 in.d.d[i].f = demux.in.d.d[i].f; |  | ||||||
|                 in.d.d[i].t = demux.in.d.d[i].t;) |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     vtree<N> in_vt(.in = in.d, .out = in.v, .supply = supply); |     vtree<N> in_vt(.in = in.d, .out = in.v, .supply = supply); | ||||||
|     (i:_N1-_N0: |     (i:_N1-_N0: | ||||||
| @@ -905,6 +861,16 @@ defproc slice_data(avMx1of2<N> in; avMx1of2<std::min(N1,N)-std::max(N0,0)> out; | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   export template<pint N; pint CONDITION_BIT> | ||||||
|  |         defproc demux_bit (avMx1of2<N+1> in; avMx1of2<N> out1; avMx1of2<N> out2; bool? reset_B; power supply) | ||||||
|  |         { | ||||||
|  |             demux<N> demux(.reset_B = reset_B, .out1=out1, .out2=out2); | ||||||
|  |  | ||||||
|  |             in.d.d[CONDITION_BIT].f = demux.cond.d.d[0].f; | ||||||
|  |             in.d.d[CONDITION_BIT].t = demux.cond.d.d[0].t; | ||||||
|  |  | ||||||
|  |             in.v = demux.in.v; | ||||||
|  |             in.a = demux.in.a; | ||||||
|  |  | ||||||
|  |  | ||||||
|             (i:0..CONDITION_BIT: |             (i:0..CONDITION_BIT: | ||||||
| @@ -935,4 +901,6 @@ defproc slice_data(avMx1of2<N> in; avMx1of2<std::min(N1,N)-std::max(N0,0)> out; | |||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| }} | }} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user