NSLの構造展開のfor文を用いたバレルシフタの例。
整数変数やvariableは、出現順順次評価を行なうことに注意。
// Copyright (c) IP ARCH, Inc. Naohiko Shimizu // All rights reserved. #define N 8 #define M 4 declare shift_%N%_%M% { input A[N], B[M]; output F[N]; func_in shift_do(A,B); } module shift_%N%_%M% { integer i,sv; variable ps[N]; function shift_do { ps=A; sv=1; for(i=0;i<M;i++) { ps = if(B[i]) (ps << sv) else ps; sv = sv << 1; } F = ps; } }