整数変数とvariableによる構造展開の例題として、もう一つ、乗算回路を示します。
これは、大きなビット数の乗算において、実用に使うには向かないですが、ビット数が少ない時には、十分使えますし、記述はシンプルな筆算形なので、分かりやすいと思います。
これは、大きなビット数の乗算において、実用に使うには向かないですが、ビット数が少ない時には、十分使えますし、記述はシンプルな筆算形なので、分かりやすいと思います。
#define N 8 #define M 4 // Copyright (c) IP ARCH, Inc. Naohiko Shimizu // All rights reserved. declare multiply_%N%_%M% { input A[N], B[M]; output F[N+M]; func_in mult_do(A,B); } module multiply_%N%_%M% { integer i; variable pp[N+M], pa[N+M]; func mult_do { pa={M{0b0},A}; pp=0; generate(i=0;i<M;i++) pp = if(B[i]) pp+(pa << i) else pp;