OpenCores
URL https://opencores.org/ocsvn/idea/idea/trunk

Subversion Repositories idea

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 6 to Rev 7
    Reverse comparison

Rev 6 → Rev 7

/trunk/structural_c/inout_port/key_in.c
0,0 → 1,38
/* File Name : key_in.c */
/* Description : The key in block */
/* Purpose : To be used by GENLIB */
/* Date : Aug 30, 2001 */
/* Version : 1.1 */
/* Author : Sigit Dewantoro */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : sigit@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
int i;
DEF_LOFIG("key_in");
LOCON("inkey[31:0]", IN, "inkey[31:0]" );
LOCON("key_sended", IN, "key_sended" );
LOCON("clk", IN, "clk" );
LOCON("rst", IN, "rst" );
LOCON("req_key", OUT, "req_key" );
LOCON("ikey_ready", INOUT, "ikey_ready" );
LOCON("inkey64[127:0]", OUT, "inkey64[127:0]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
 
LOINS("dec1to4","dec12","inkey[31:0]","n_block","en_bufin","rst","inkey64_total[127:95]",
"inkey64_total[95:64]","inkey64_total[63:32]","inkey64_total[31:0]","vdd","vss",0);
 
LOINS("in_key","ctrl_inkey","clk","rst","key_sended","en_bufin",
"req_key","ikey_ready","n_block", "vdd","vss",0);
for(i=0;i<128;i++)
LOINS("buf_x2",NAME("buf%d",i),NAME("inkey64_total[%d]",i),NAME("inkey64[%d]",i),
"vdd","vss",0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/inout_port/data_in.c
0,0 → 1,39
/* File Name : data_in.c */
/* Description : The data in block */
/* Purpose : To be used by GENLIB */
/* Date : Aug 30, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
int i;
DEF_LOFIG("data_in");
LOCON("datain[31:0]", IN, "datain[31:0]" );
LOCON("dt_sended", IN, "dt_sended" );
LOCON("emp_buf", IN, "emp_buf" );
LOCON("clk", IN, "clk" );
LOCON("rst", IN, "rst" );
LOCON("req_dt", OUT, "req_dt" );
LOCON("dt_ready", INOUT, "dt_ready" );
LOCON("data64in[63:0]", OUT, "data64in[63:0]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
 
LOINS("dec1to2","dec12","datain[31:0]","n_block","en_bufin","rst","data64in_t[63:32]",
"data64in_t[31:0]","vdd","vss",0);
 
LOINS("control_datain","ctrl_dtin","clk","rst","dt_sended","emp_buf","en_bufin",
"req_dt","dt_ready","n_block", "vdd","vss",0);
for(i=0;i<=63;i++)
LOINS("buf_x2",NAME("buf%d",i),NAME("data64in_t[%d]",i),NAME("data64in[%d]",i),
"vdd","vss",0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/inout_port/data_out.c
0,0 → 1,34
/* File Name : data_out.c */
/* Description : The data out block */
/* Purpose : To be used by GENLIB */
/* Date : Aug 30, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
DEF_LOFIG("data_out");
LOCON("data64out[63:0]", IN, "data64out[63:0]" );
LOCON("cp_ready", IN, "cp_ready" );
LOCON("emp_bufout", IN, "emp_bufout" );
LOCON("clk", IN, "clk" );
LOCON("rst", IN, "rst" );
LOCON("req_cp", OUT, "req_cp" );
LOCON("cp_sended", OUT, "cp_sended" );
LOCON("dataout[31:0]", OUT, "dataout[31:0]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
 
LOINS("mux2to1","mux","data64out[63:0]","n_block","en_bufout","rst",
"dataout[31:0]","vdd","vss",0);
 
LOINS("control_dataout","ctrl_dtout","clk","rst","cp_ready","emp_bufout",
"en_bufout","req_cp","cp_sended","n_block","vdd","vss",0);
 
SAVE_LOFIG(); exit(0);
}
/trunk/structural_c/operation_mode/reg01.c
0,0 → 1,29
// File Name : reg01.c
// Description : Register 1 bit in C
// Author : Sigit Dewantoro
// Date : July 3rd, 2001
 
#include<genlib.h>
 
main()
{
int i;
 
DEF_LOFIG("reg01");
LOCON("a", IN, "a");
LOCON("rst", IN, "rst");
LOCON("en", IN, "en");
// LOCON("c", INOUT, "c");
LOCON("b", INOUT, "b");
LOCON("vdd", IN, "vdd");
LOCON("vss", IN, "vss");
 
LOINS ("a2_x2", "and1", "en", "a", "a1", "vdd", "vss", 0);
LOINS ("no2_x1", "nor1", "a1", "b", "c", "vdd", "vss", 0);
LOINS ("inv_x1", "inv1", "a", "nota", "vdd", "vss", 0);
LOINS ("a2_x2", "and2", "en", "nota" , "a2", "vdd", "vss", 0);
LOINS ("no3_x1", "nor2", "a2", "c", "rst", "b", "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/operation_mode/register64.c
0,0 → 1,25
// File Name : register64.c
// Description : Register 64 bit in C
// Author : Sigit Dewantoro
// Date : July 10th, 2001
 
#include<genlib.h>
 
main()
{
int i;
 
DEF_LOFIG("register64");
LOCON("a[0:63]", IN, "a[0:63]");
LOCON("rst", IN, "rst");
LOCON("en", IN, "en");
LOCON("b[0:63]", INOUT, "b[0:63]");
LOCON("vdd", IN, "vdd");
LOCON("vss", IN, "vss");
 
for (i=0; i<64; i++)
LOINS ("reg01", NAME("reg%d", i + 1), NAME("a[%d]", i), "rst", "en", NAME("b[%d]", i), "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/operation_mode/reg01_pat.c
0,0 → 1,59
// File Name : reg01_pat.c
// Description : Test Pattern for block register
// Author : Sigit Dewantoro
// Date : July 3rd, 2001
 
#include <stdio.h>
#include "genpat.h"
 
char *inttostr (entier)
int entier;
{
char *str;
str = (char *) mbkalloc (32 * sizeof (char));
sprintf (str, "%d", entier);
return (str);
}
 
main ()
{
int i, j, k, l, m;
int vect_date; /* this date is an absolute date, in ps */
 
DEF_GENPAT ("reg01");
 
SETTUNIT ("ns");
 
/* interface */
DECLAR ("vdd", ":2", "B", IN, "", "");
DECLAR ("vss", ":2", "B", IN, "", "");
DECLAR ("a", ":2", "B", IN, "", "");
DECLAR ("rst", ":2", "B", IN, "", "");
DECLAR ("en", ":2", "B", IN, "", "");
DECLAR ("b", ":2", "B", OUT, "", "");
DECLAR ("c", ":2", "B", OUT, "", "");
 
LABEL ("pat");
AFFECT ("0", "vss", "0b0");
AFFECT ("0", "vdd", "0b1");
 
 
for (i=0; i<2; i++)
for (j=0; j<2; j++)
for (k=0; k<2; k++)
for (l=0; l<2; l++)
{
vect_date = ((i*2 + j)*2 + k);
AFFECT (inttostr(vect_date), "a", inttostr(i));
AFFECT (inttostr(vect_date), "rst", inttostr(j));
AFFECT (inttostr(vect_date), "en", inttostr(k));
}
 
vect_date = vect_date + 1;
AFFECT (inttostr(vect_date), "vss", "0b0");
AFFECT (inttostr(vect_date), "a", "0b0");
AFFECT (inttostr(vect_date), "rst", "0b0");
AFFECT (inttostr(vect_date), "en", "0b0");
 
SAV_GENPAT ();
}
/trunk/structural_c/operation_mode/xor64.c
0,0 → 1,29
// File Name : xor64.c
// Description : xor 64 bit in C
// Author : Sigit Dewantoro
// Date : July 10th, 2001
 
#include<genlib.h>
 
main()
{
int i;
 
DEF_LOFIG("xor64");
LOCON("a[0:63]", IN, "a[0:63]");
LOCON("b[0:63]", IN, "b[0:63]");
// LOCON("rst", IN, "rst");
// LOCON("en", IN, "en");
LOCON("o[0:63]", OUT, "o[0:63]");
LOCON("vdd", IN, "vdd");
LOCON("vss", IN, "vss");
 
for (i=0; i<64; i++)
{
LOINS ("xr2_x1", NAME("xor%d", i + 1), NAME("a[%d]", i), NAME("b[%d]",i), NAME("i[%d]", i), "vdd", "vss", 0);
 
LOINS ("latch", NAME("en%d", i+1), NAME("i%d",i), "en", NAME("o%d",i),"vdd","vss",0);
}
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/operation_mode/latch.c
0,0 → 1,24
// File Name : latch.c
// Description : Latch in C
// Author : Sigit Dewantoro
// Date : March 27th, 2001
 
#include <genlib.h>
 
main()
{
DEF_LOFIG ("latch");
 
LOCON ("a", IN, "a");
LOCON ("en", IN, "en");
LOCON ("b", INOUT, "b");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("noa22_x1", "notorand1", "en", "a", "b", "q", "vdd", "vss", 0);
LOINS ("inv_x1", "inv1", "a", "nota", "vdd", "vss", 0);
LOINS ("noa22_x1", "notorand2", "en", "nota" , "q", "b", "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/operation_mode/blokmode.c
0,0 → 1,44
// File Name : blokmode.c
// Description : blokmode in C
// Author : Sigit Dewantoro
// Date : July 10th, 2001
 
#include<genlib.h>
 
main()
{
int i;
 
DEF_LOFIG("blokmode");
LOCON("data_in[0:63]", IN, "data_in[0:63]");
LOCON("ideam_out[0:63]", IN, "ideam_out[0:63]");
LOCON("rst", IN, "rst");
LOCON("clk", IN, "clk");
LOCON("en_in", IN, "en_in");
LOCON("en_iv", IN, "en_iv");
LOCON("en_rcbc", IN, "en_rcbc");
LOCON("en_out", IN, "en_out");
LOCON("sel1[0:1]", IN, "sel1[0:1]");
LOCON("sel2[0:1]", IN, "sel2[0:1]");
LOCON("sel3[0:1]", IN, "sel3[0:1]");
LOCON("dt_inidea[0:63]", OUT, "dt_inidea[0:63]");
LOCON("cp_out[0:63]", OUT, "cp_out[0:63]");
LOCON("vdd", IN, "vdd");
LOCON("vss", IN, "vss");
 
for (i=0;i<64;i++)
LOINS ("zero_x0", NAME("zero%d",i), NAME("zero64[%d]",i), "vdd", "vss", 0);
 
LOINS ("register64", "reg_in", "data_in[0:63]", "rst","en_in", "reg_in[0:63]", "vdd", "vss", 0);
LOINS ("mux64", "mux1", "xor2[63:0]", "reg_in[63:0]", "zero64[63:0]", "sel1[1:0]", "mux1[63:0]", "vdd", "vss", 0);
LOINS ("register64", "reg_iv","mux1[0:63]", "rst", "en_iv", "reg_iv[0:63]", "vdd", "vss", 0);
LOINS ("mux64", "mux2", "xor2[63:0]", "reg_iv[63:0]", "zero64[63:0]", "sel2[1:0]", "mux2[63:0]","vdd", "vss", 0);
LOINS ("xor64", "xor1", "mux1[63:0]", "mux2[63:0]", "dt_inidea[63:0]", "vdd", "vss", 0);
LOINS ("register64", "reg_cbc", "reg_iv[0:63]", "rst","en_rcbc", "reg_cbc[0:63]", "vdd", "vss", 0);
LOINS ("mux64", "mux3", "reg_cbc[63:0]", "reg_in[63:0]", "zero64[63:0]", "sel3[1:0]","mux3[63:0]","vdd", "vss", 0);
LOINS ("xor64", "xor2", "ideam_out[63:0]", "mux3[63:0]", "xor2[63:0]", "vdd", "vss", 0);
LOINS ("register64", "reg_out","xor2[0:63]", "rst","en_out","cp_out[0:63]", "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/main control/d_latch.c
0,0 → 1,21
/* D latch with an asynchronized clr */
#include<genlib.h>
main()
{
DEF_LOFIG("d_latch");
LOCON("d", IN, "d" );
LOCON("en", IN, "en" );
LOCON("clr", IN, "clr");
LOCON("q", INOUT, "q" );
LOCON("vdd", IN, "vdd");
LOCON("vss", IN, "vss");
 
LOINS("inv_x2","inv","d","o_inv","vdd","vss",0);
LOINS("a2_x2","an1","o_inv","en","o_an1","vdd","vss",0);
LOINS("a2_x2","an2","d","en","o_an2","vdd","vss",0);
LOINS("no3_x4","nor1","o_an1","clr","o_nor2","q","vdd","vss",0);
LOINS("no2_x4","nor2","q","o_an2","o_nor2","vdd","vss",0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/main control/reg01.c
0,0 → 1,29
// File Name : reg01.c
// Description : Register 1 bit in C
// Author : Sigit Dewantoro
// Date : July 3rd, 2001
 
#include<genlib.h>
 
main()
{
int i;
 
DEF_LOFIG("reg01");
LOCON("a", IN, "a");
LOCON("rst", IN, "rst");
LOCON("en", IN, "en");
LOCON("c", INOUT, "c");
LOCON("b", INOUT, "b");
LOCON("vdd", IN, "vdd");
LOCON("vss", IN, "vss");
 
LOINS ("a2_x2", "and1", "en", "a", "a1", "vdd", "vss", 0);
LOINS ("no2_x1", "nor1", "a1", "b", "c", "vdd", "vss", 0);
LOINS ("inv_x1", "inv1", "a", "nota", "vdd", "vss", 0);
LOINS ("a2_x2", "and2", "en", "nota" , "a2", "vdd", "vss", 0);
LOINS ("no3_x1", "nor2", "a2", "c", "rst", "b", "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/main control/register64.c
0,0 → 1,25
// File Name : register64.c
// Description : Register 64 bit in C
// Author : Sigit Dewantoro
// Date : July 10th, 2001
 
#include<genlib.h>
 
main()
{
int i;
 
DEF_LOFIG("register64");
LOCON("a[0:63]", IN, "a[0:63]");
LOCON("rst", IN, "rst");
LOCON("en", IN, "en");
LOCON("b[0:63]", INOUT, "b[0:63]");
LOCON("vdd", IN, "vdd");
LOCON("vss", IN, "vss");
 
for (i=0; i<64; i++)
LOINS ("reg01", NAME("reg%d", i + 1), NAME("a[%d]", i), "rst", "en", NAME("b[%d]", i), "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/main control/controlmode.c
0,0 → 1,105
// File Name : controlmode.c
// Version : v1.2
// Description : control block for operation mode
// Purpose : to generate structural description of control mode
// Author : Sigit Dewantoro
// Address : IS Laboratory, Labtek VIII, ITB, Jl. Ganesha 10, Bandung, Indonesia
// Email : sigit@students.ee.itb.ac.id, sigit@ic.vlsi.itb.ac.id
// Date : August 24th, 2001
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("controlmode");
 
LOCON ("clk", IN, "clk");
LOCON ("start", IN, "start");
LOCON ("mode[0:1]", IN, "mode[0:1]");
 
LOCON ("cke", IN, "cke");
LOCON ("ikey_ready", IN, "ikey_ready");
LOCON ("key_ready", IN, "key_ready");
LOCON ("dt_ready", IN, "dt_ready");
LOCON ("finish", IN, "finish");
LOCON ("req_cp", IN, "req_cp");
LOCON ("E", IN, "E");
 
LOCON ("first_dt", OUT, "first_dt");
LOCON ("E_mesin", OUT, "E_mesin");
LOCON ("s_mesin", OUT, "s_mesin");
LOCON ("s_gen_key", OUT, "s_gen_key");
LOCON ("emp_buf", OUT, "emp_buf");
LOCON ("cp_ready", OUT, "cp_ready");
LOCON ("cke_b_mode", OUT, "cke_b_mode");
LOCON ("en_in", OUT, "en_in");
LOCON ("en_iv", OUT, "en_iv");
LOCON ("en_rcbc", OUT, "en_rcbc");
LOCON ("en_out", OUT, "en_out");
LOCON ("sel1[0:1]", OUT, "sel1[0:1]");
LOCON ("sel2[0:1]", OUT, "sel2[0:1]");
LOCON ("sel3[0:1]", OUT, "sel3[0:1]");
 
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("dec_mode", "decmode", "start", "mode[1:0]", "modeecb", "modecbc", "modecfb",
"modeofb", "vdd", "vss", 0);
 
LOINS ("ecb", "ecb", "modeecb", "clk", "cke", "key_ready", "finish", "req_cp",
"E", "E_mesin_ecb", "s_mesin_ecb", "s_gen_key_ecb", "emp_buf_ecb", "cp_ready_ecb",
"cke_b_mode_ecb", "en_in_ecb", "en_iv_ecb", "en_rcbc_ecb", "en_out_ecb", "sel1_ecb[1:0]",
"sel2_ecb[1:0]", "sel3_ecb[1:0]", "vdd", "vss", 0);
 
LOINS ("cbc", "cbc", "modecbc", "clk", "cke", "ikey_ready", "key_ready", "dt_ready",
"finish", "E", "first_dt_cbc", "E_mesin_cbc", "s_mesin_cbc", "s_gen_key_cbc", "emp_buf_cbc",
"cp_ready_cbc", "cke_b_mode_cbc", "en_in_cbc", "en_iv_cbc", "en_rcbc_cbc", "en_out_cbc",
"sel1_cbc[1:0]", "sel2_cbc[1:0]", "sel3_cbc[1:0]", "vdd", "vss", 0);
 
LOINS ("cfb", "cfb", "modecfb", "clk", "key_ready", "dt_ready", "finish",
"E", "first_dt_cfb", "E_mesin_cfb", "s_mesin_cfb", "s_gen_key_cfb", "emp_buf_cfb",
"cp_ready_cfb", "cke_b_mode_cfb", "en_in_cfb", "en_iv_cfb", "en_rcbc_cfb", "en_out_cfb",
"sel1_cfb[1:0]", "sel2_cfb[1:0]", "sel3_cfb[1:0]", "vdd", "vss", 0);
 
LOINS ("ofb", "ofb", "modeofb", "clk", "key_ready", "dt_ready", "finish","first_dt_ofb",
"E_mesin_ofb", "s_mesin_ofb", "emp_buf_ofb", "cp_ready_ofb",
"cke_b_mode_ofb", "en_in_ofb", "en_iv_ofb", "en_rcbc_ofb", "en_out_ofb",
"sel1_ofb[1:0]", "sel2_ofb[1:0]", "sel3_ofb[1:0]", "vdd", "vss", 0);
 
LOINS ("zero_x0", "zero", "nol", "vdd", "vss", 0);
 
LOINS ("mux01", "mux_first_dt", "nol", "first_dt_cbc", "first_dt_cfb", "first_dt_ofb",
"mode[1:0]", "first_dt", "vdd", "vss", 0);
LOINS ("mux01", "mux_E_mesin", "E_mesin_ecb", "E_mesin_cbc", "E_mesin_cfb", "E_mesin_ofb",
"mode[1:0]", "E_mesin", "vdd", "vss", 0);
LOINS ("mux01", "mux_s_mesin", "s_mesin_ecb", "s_mesin_cbc", "s_mesin_cfb", "s_mesin_ofb",
"mode[1:0]", "s_mesin", "vdd", "vss", 0);
LOINS ("mux01", "mux_s_gen_key", "s_gen_key_ecb", "s_gen_key_cbc", "s_gen_key_cfb", "cke_b_mode_ofb",
"mode[1:0]", "s_gen_key", "vdd", "vss", 0);
LOINS ("mux01", "mux_emp_buf", "emp_buf_ecb", "emp_buf_cbc", "emp_buf_cfb", "emp_buf_ofb",
"mode[1:0]", "emp_buf", "vdd", "vss", 0);
LOINS ("mux01", "mux_cp_ready", "cp_ready_ecb", "cp_ready_cbc", "cp_ready_cfb", "cp_ready_ofb",
"mode[1:0]", "cp_ready", "vdd", "vss", 0);
LOINS ("mux01", "mux_cke_b_mode", "cke_b_mode_ecb", "cke_b_mode_cbc", "cke_b_mode_cfb", "cke_b_mode_ofb",
"mode[1:0]", "cke_b_mode", "vdd", "vss", 0);
LOINS ("mux01", "mux_en_in", "en_in_ecb", "en_in_cbc", "en_in_cfb", "en_in_ofb",
"mode[1:0]", "en_in", "vdd", "vss", 0);
LOINS ("mux01", "mux_en_iv", "en_iv_ecb", "en_iv_cbc", "en_iv_cfb", "en_iv_ofb",
"mode[1:0]", "en_iv", "vdd", "vss", 0);
LOINS ("mux01", "mux_en_rcbc", "en_rcbc_ecb", "en_rcbc_cbc", "en_rcbc_cfb", "en_rcbc_ofb",
"mode[1:0]", "en_rcbc", "vdd", "vss", 0);
LOINS ("mux01", "mux_en_out", "en_out_ecb", "en_out_cbc", "en_out_cfb", "en_out_ofb",
"mode[1:0]", "en_out", "vdd", "vss", 0);
 
LOINS ("mux02", "mux_sel1", "sel1_ecb[1:0]", "sel1_cbc[1:0]", "sel1_cfb[1:0]", "sel1_ofb[1:0]",
"mode[1:0]", "sel1[1:0]", "vdd", "vss", 0);
LOINS ("mux02", "mux_sel2", "sel2_ecb[1:0]", "sel2_cbc[1:0]", "sel2_cfb[1:0]", "sel2_ofb[1:0]",
"mode[1:0]", "sel2[1:0]", "vdd", "vss", 0);
LOINS ("mux02", "mux_sel3", "sel3_ecb[1:0]", "sel3_cbc[1:0]", "sel3_cfb[1:0]", "sel3_ofb[1:0]",
"mode[1:0]", "sel3[1:0]", "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/main control/zero34.c
0,0 → 1,23
// File Name : zero34.c
// Description : Zero 34 bit
// Author : Sigit Dewantoro
// Date : June 21th, 2001
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("zero 34");
 
LOCON ("zero[33:0]", OUT, "zero[33:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
for (i = 0; i < 34; i++)
LOINS ("zero_x0", NAME("zero%d", i + 1), NAME("zero[%d]", i), "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/d_latch.c
0,0 → 1,30
/* File Name : d_latch.c */
/* Description : The D latch with an asynchronized clr */
/* Purpose : To be used by GENLIB */
/* Date : Aug 21, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
#include<genlib.h>
main()
{
DEF_LOFIG("d_latch");
LOCON("d", IN, "d" );
LOCON("ck", IN, "ck" );
LOCON("clr", IN, "clr");
LOCON("q", INOUT, "q" );
LOCON("vdd", IN, "vdd");
LOCON("vss", IN, "vss");
 
LOINS("inv_x2","inv","d","o_inv","vdd","vss",0);
LOINS("a2_x2","an1","o_inv","ck","o_an1","vdd","vss",0);
LOINS("a2_x2","an2","d","ck","o_an2","vdd","vss",0);
LOINS("no3_x4","nor1","o_an1","clr","o_nor2","q","vdd","vss",0);
LOINS("no2_x4","nor2","q","o_an2","o_nor2","vdd","vss",0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/subtract16.c
0,0 → 1,37
/* File Name : subtract16.c */
/* Description : The 16-bit subtractor */
/* Purpose : To be used by GENLIB */
/* Date : Aug 22, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
int i;
DEF_LOFIG("subtract16");
LOCON("a[0:15]", IN, "a[0:15]" );
LOCON("b[0:15]", IN, "b[0:15]" );
LOCON("s[0:15]", OUT, "s[0:15]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
LOINS("zero_x0","zero","o_zero","vdd","vss",0);
for(i=0;i<=15;i++)
if (i==0)
LOINS("fsub_glopg",NAME("fs%d",i),NAME("a[%d]",i),NAME("b[%d]",i),"o_zero",
NAME("s[%d]",i),NAME("bo[%d]",i),"vdd","vss",0);
else if(i==15) {
LOINS("xr2_x1","xr2",NAME("a[%d]",i),NAME("b[%d]",i),"o_xr2","vdd","vss",0);
LOINS("xr2_x1","xr3","o_xr2",NAME("bo[%d]",i-1),NAME("s[%d]",i),"vdd","vss",0);
}
else
LOINS("fsub_glopg",NAME("fs%d",i),NAME("a[%d]",i),NAME("b[%d]",i),NAME("bo[%d]",i-1),
NAME("s[%d]",i),NAME("bo[%d]",i),"vdd","vss",0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/idea_encryptor_pat_enc.c
0,0 → 1,194
/* File Name : idea_encryptor_pat_enc.c */
/* Description : The encryption test patterns of IDEA encryption block */
/* Purpose : To be used by GENLIB */
/* Date : Aug 23, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include <stdio.h>
#include "genpat.h"
#define interval 30
char *inttostr(entier)
int entier;
{
char *str;
str = (char *) mbkalloc (32 * sizeof (char));
sprintf (str, "%d",entier);
return(str);
}
main ()
{
int round,i;
int time, max;
 
DEF_GENPAT("idea_encryptor_encrypt");
SETTUNIT ("ns");
/* Inputs */
/* for power supply */
DECLAR ("vdd", ":2", "B", IN, "", "");
DECLAR ("vss", ":2", "B", IN, "", "");
/* for 64-bit input data */
DECLAR ("x1", ":2", "X", IN, "15 downto 0", "");
DECLAR ("x2", ":2", "X", IN, "15 downto 0", "");
DECLAR ("x3", ":2", "X", IN, "15 downto 0", "");
DECLAR ("x4", ":2", "X", IN, "15 downto 0", "");
/* for the 6 16-bit subkeys of each round */
DECLAR ("z1", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z2", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z3", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z4", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z5", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z6", ":2", "X", IN, "15 downto 0", "");
/* for the 4 16-bit subkeys of output transformation state */
DECLAR ("z19", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z29", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z39", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z49", ":2", "X", IN, "15 downto 0", "");
/* for control signals */
DECLAR ("clk", ":2", "B", IN, "", "");
DECLAR ("rst", ":2", "B", IN, "", "");
DECLAR ("start", ":2", "B", IN, "", "");
DECLAR ("key_ready", ":2", "B", IN, "", "");
 
DECLAR ("round", ":2", "B", OUT, "2 downto 0","");
DECLAR ("en_key_out", ":2", "B", OUT, "","");
DECLAR ("finish", ":2", "B", OUT, "","");
 
/* Outputs */
/* for 4 16-bit outpus */
DECLAR ("y1", ":2", "X", OUT, "15 downto 0", "");
DECLAR ("y2", ":2", "X", OUT, "15 downto 0", "");
DECLAR ("y3", ":2", "X", OUT, "15 downto 0", "");
DECLAR ("y4", ":2", "X", OUT, "15 downto 0", "");
max =21;
for (round=0; round<8; round++)
{
for (i=0;i<max;i++)
{
if(round == 0)
time = ((round*max) + i) * interval ;
else if(round ==1 ) {
max = 16;
time = ((round*max) + i + 5) * interval; }
else {
max = 16;
time = ((round*max) + i + 5) * interval; }
AFFECT (inttostr(time), "vdd", "0b1");
AFFECT (inttostr(time), "vss", "0b0");
 
if(((time/interval)+2)% 2 == 0)
AFFECT (inttostr(time), "clk", "0b0");
else
AFFECT (inttostr(time), "clk", "0b1");
 
if((time/interval) < 2)
AFFECT (inttostr(time), "rst", "0b1");
else
AFFECT (inttostr(time), "rst", "0b0");
 
if((time/interval) < 5)
{ AFFECT (inttostr(time), "start", "0b0");
AFFECT (inttostr(time), "key_ready", "0b0");
}
else
{ AFFECT (inttostr(time), "start", "0b1");
AFFECT (inttostr(time), "key_ready", "0b1");
}
AFFECT (inttostr(time), "x1", "11");
AFFECT (inttostr(time), "x2", "12");
AFFECT (inttostr(time), "x3", "13");
AFFECT (inttostr(time), "x4", "14");
if(round == 0)
{ LABEL ("round_1");
AFFECT (inttostr(time), "z1", "3");
AFFECT (inttostr(time), "z2", "5");
AFFECT (inttostr(time), "z3", "7");
AFFECT (inttostr(time), "z4", "9");
AFFECT (inttostr(time), "z5", "11");
AFFECT (inttostr(time), "z6", "13");
}
else if(round == 1)
{ LABEL ("round_2");
AFFECT (inttostr(time), "z1", "15");
AFFECT (inttostr(time), "z2", "17");
AFFECT (inttostr(time), "z3", "2560");
AFFECT (inttostr(time), "z4", "3584");
AFFECT (inttostr(time), "z5", "4608");
AFFECT (inttostr(time), "z6", "5632");
}
else if(round == 2)
{ LABEL ("round_3");
AFFECT (inttostr(time), "z1", "6656");
AFFECT (inttostr(time), "z2", "7680");
AFFECT (inttostr(time), "z3", "8704");
AFFECT (inttostr(time), "z4", "1536");
AFFECT (inttostr(time), "z5", "36");
AFFECT (inttostr(time), "z6", "44");
}
else if(round == 3)
{ LABEL ("round_4");
AFFECT (inttostr(time), "z1", "52");
AFFECT (inttostr(time), "z2", "60");
AFFECT (inttostr(time), "z3", "68");
AFFECT (inttostr(time), "z4", "12");
AFFECT (inttostr(time), "z5", "20");
AFFECT (inttostr(time), "z6", "28");
}
else if(round == 4)
{ LABEL ("round_5");
AFFECT (inttostr(time), "z1", "22528");
AFFECT (inttostr(time), "z2", "26624");
AFFECT (inttostr(time), "z3", "30720");
AFFECT (inttostr(time), "z4", "34816");
AFFECT (inttostr(time), "z5", "6144");
AFFECT (inttostr(time), "z6", "10240");
}
else if(round == 5)
{ LABEL ("round_6");
AFFECT (inttostr(time), "z1", "14336");
AFFECT (inttostr(time), "z2", "18432");
AFFECT (inttostr(time), "z3", "240");
AFFECT (inttostr(time), "z4", "272");
AFFECT (inttostr(time), "z5", "48");
AFFECT (inttostr(time), "z6", "80");
}
else if(round == 6)
{ LABEL ("round_7");
AFFECT (inttostr(time), "z1", "112");
AFFECT (inttostr(time), "z2", "144");
AFFECT (inttostr(time), "z3", "176");
AFFECT (inttostr(time), "z4", "208");
AFFECT (inttostr(time), "z5", "8192");
AFFECT (inttostr(time), "z6", "24576");
}
else
{ max=22;
LABEL ("round_8");
AFFECT (inttostr(time), "z1", "40960");
AFFECT (inttostr(time), "z2", "57345");
AFFECT (inttostr(time), "z3", "8193");
AFFECT (inttostr(time), "z4", "24577");
AFFECT (inttostr(time), "z5", "40961");
AFFECT (inttostr(time), "z6", "57346");
}
AFFECT (inttostr(time), "z19", "320");
AFFECT (inttostr(time), "z29", "448");
AFFECT (inttostr(time), "z39", "576");
AFFECT (inttostr(time), "z49", "704");
}
}
SAV_GENPAT ();
}
 
/trunk/structural_c/idea_machine/m32adder.c
0,0 → 1,35
/* File Name : m32adder.c */
/* Description : The modulo 2^32 adder */
/* Date : Aug 22, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Adress : VLSI RG, Dept. Electrical of Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("m32adder");
 
LOCON ("a[31:0]", IN, "a[31:0]");
LOCON ("b[31:0]", IN, "b[31:0]");
LOCON ("sum[31:0]", OUT, "sum[31:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("halfadder_glopf", "halfadder", "a[0]", "b[0]", "cout0", "sum[0]","vdd", "vss", 0);
 
for (i = 1; i <= 30; i++)
LOINS("fulladder_glopg", NAME("fulladder%d", i), NAME("a[%d]", i),NAME("b[%d]", i),
NAME("cout%d", i-1), NAME("cout%d", i), NAME("sum[%d]", i), "vdd", "vss", 0);
 
LOINS ("xr2_x1", "xr1", "a[31]", "b[31]", "o_xr1", "vdd", "vss", 0);
LOINS ("xr2_x1", "xr2", "o_xr1", "cout30", "sum[31]", "vdd", "vss", 0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/s16xor.c
0,0 → 1,28
/* File Name : s16xor.c */
/* Description : The synchronized 16-bit xor */
/* Purpose : To be used by GENLIB */
/* Date : Aug 23, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
DEF_LOFIG("s16xor");
LOCON("a[0:15]", IN, "a[0:15]" );
LOCON("b[0:15]", IN, "b[0:15]" );
LOCON("en", IN, "en" );
LOCON("clr", IN, "clr" );
LOCON("q[0:15]", INOUT, "q[0:15]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
LOINS("xor16_glopg","xr16","a[0:15]","b[0:15]","o_xr16[0:15]","vdd","vss",0);
LOINS("reg16_glopf","rg16","o_xr16[0:15]","en","clr","q[0:15]","vdd","vss",0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/m16adder.c
0,0 → 1,37
/* File Name : m16adder.c */
/* Description : The modulo 2^16 adder */
/* Purpose : To be used by GENLIB */
/* Date : Aug 21, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
int i;
DEF_LOFIG("m16adder");
LOCON("a[0:15]", IN, "a[0:15]" );
LOCON("b[0:15]", IN, "b[0:15]" );
LOCON("s[0:15]", OUT, "s[0:15]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
for(i=0;i<=15;i++)
if(i==0)
LOINS("halfadder_glopf","ha","a[0]","b[0]","c[0]","s[0]","vdd","vss",0);
 
else if(i==15) {
LOINS("xr2_x1","xr1",NAME("a[%d]",i),NAME("b[%d]",i),"o_xr1","vdd","vss",0);
LOINS("xr2_x1","xr2","o_xr1",NAME("c[%d]",i-1),NAME("s[%d]",i),"vdd","vss",0);
}
else
LOINS("fulladder_glopg",NAME("fa%d",i),
NAME("a[%d]",i),NAME("b[%d]",i),NAME("c[%d]",i-1),
NAME("c[%d]",i),NAME("s[%d]",i),"vdd","vss",0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/mul17.c
0,0 → 1,45
/* File Name : mul17.c */
/* Description : The 17x17 bit multiplier */
/* Date : Aug 21, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Adress : VLSI RG, Dept. Electrical of Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("mul17");
 
LOCON ("a[16:0]", IN, "a[16:0]");
LOCON ("b[16:0]", IN, "b[16:0]");
LOCON ("sum[31:0]", OUT, "sum[31:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
 
LOINS("leftshifter_glopg","lshifter", "a[16:0]",
"b[15:0]", "r0[31:0]","r1[31:0]","r2[31:0]","r3[31:0]","r4[31:0]",
"r5[31:0]","r6[31:0]","r7[31:0]","r8[31:0]","r9[31:0]","r10[31:0]",
"r11[31:0]","r12[31:0]","r13[31:0]","r14[31:0]","r15[31:0]","r16[31:0]",
"vdd", "vss", 0);
 
for(i=0;i<=31;i++)
LOINS ("zero_x0", NAME("zero%d",i), NAME("o_zero[%d]",i), "vdd", "vss", 0);
LOINS ("m32adder_glopg", "m32add_1", "o_zero[31:0]", "r0[31:0]", "sum1[31:0]", "vdd", "vss", 0);
 
for (i = 2; i <= 17; i++)
LOINS("m32adder_glopg", NAME("m32add_%d", i), NAME("sum%d[31:0]", i-1),
NAME("r%d[31:0]", i-1), NAME("sum%d[31:0]", i), "vdd", "vss", 0);
 
for (i = 0; i <=31 ;i++)
LOINS ("o2_x2", NAME("or2_%d",i),"b[16]",NAME("sum17[%d]",i),NAME("sum[%d]",i),
"vdd", "vss", 0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/idea_encryptor.c
0,0 → 1,54
/* File Name : idea_encryptor.c */
/* Description : The enncryption block of IDEA processor */
/* Purpose : To be used by GENLIB */
/* Date : Aug 22, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
DEF_LOFIG("idea_encryptor");
LOCON("clk", IN, "clk" );
LOCON("rst", IN, "rst" );
LOCON("start", IN, "start" );
LOCON("key_ready", IN, "key_ready" );
LOCON("x1[15:0]", IN, "x1[15:0]" );
LOCON("x2[15:0]", IN, "x2[15:0]" );
LOCON("x3[15:0]", IN, "x3[15:0]" );
LOCON("x4[15:0]", IN, "x4[15:0]" );
 
LOCON("z1[15:0]", IN, "z1[15:0]" );
LOCON("z2[15:0]", IN, "z2[15:0]" );
LOCON("z3[15:0]", IN, "z3[15:0]" );
LOCON("z4[15:0]", IN, "z4[15:0]" );
LOCON("z5[15:0]", IN, "z5[15:0]" );
LOCON("z6[15:0]", IN, "z6[15:0]" );
LOCON("z19[15:0]", IN, "z19[15:0]" );
LOCON("z29[15:0]", IN, "z29[15:0]" );
LOCON("z39[15:0]", IN, "z39[15:0]" );
LOCON("z49[15:0]", IN, "z49[15:0]" );
LOCON("y1[15:0]", OUT, "y1[15:0]" );
LOCON("y2[15:0]", INOUT, "y2[15:0]" );
LOCON("y3[15:0]", INOUT, "y3[15:0]" );
LOCON("y4[15:0]", OUT, "y4[15:0]" );
LOCON("round[2:0]", OUT, "round[2:0]" );
LOCON("en_key_out", OUT, "en_key_out" );
LOCON("finish", OUT, "finish" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
LOINS("idea_heart_glopf","heart","en[1:7]","en_out","clk","sel_in","x1[0:15]","x2[0:15]",
"x3[0:15]","x4[0:15]","z1[0:15]","z2[0:15]","z3[0:15]","z4[0:15]","z5[0:15]",
"z6[0:15]","z19[0:15]","z29[0:15]","z39[0:15]","z49[0:15]","y1[0:15]","y2[0:15]",
"y3[0:15]","y4[0:15]","rst","vdd","vss",0);
 
LOINS("heart_ctrl_glopg","h_ctrl","clk","rst","start","key_ready","round[2:0]","en[1:7]",
"en_out","en_key_out","sel_in","finish","vdd","vss",0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/out_trans.c
0,0 → 1,40
/* File Name : out_trans.c */
/* Description : The output transformation */
/* Purpose : To be used by GENLIB */
/* Date : Aug 23, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
 
#include<genlib.h>
main()
{
DEF_LOFIG("out_trans");
LOCON("en", IN, "en" );
LOCON("x1[0:15]", IN, "x1[0:15]" );
LOCON("x2[0:15]", IN, "x2[0:15]" );
LOCON("x3[0:15]", IN, "x3[0:15]" );
LOCON("x4[0:15]", IN, "x4[0:15]" );
LOCON("z1[0:15]", IN, "z1[0:15]" );
LOCON("z2[0:15]", IN, "z2[0:15]" );
LOCON("z3[0:15]", IN, "z3[0:15]" );
LOCON("z4[0:15]", IN, "z4[0:15]" );
LOCON("y1[0:15]", OUT, "y1[0:15]" );
LOCON("y2[0:15]", INOUT, "y2[0:15]" );
LOCON("y3[0:15]", INOUT, "y3[0:15]" );
LOCON("y4[0:15]", OUT, "y4[0:15]" );
LOCON("reset", IN, "reset" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
LOINS("sm16plus1mul_glopf","trans1","x1[0:15]","z1[0:15]","en","reset","y1[0:15]","vdd","vss",0);
LOINS("sm16adder_glopf","trans2","x3[0:15]","z2[0:15]","en","reset","y2[0:15]","vdd","vss",0);
LOINS("sm16adder_glopf","trans3","x2[0:15]","z3[0:15]","en","reset","y3[0:15]","vdd","vss",0);
LOINS("sm16plus1mul_glopf","trans4","x4[0:15]","z4[0:15]","en","reset","y4[0:15]","vdd","vss",0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/xor16.c
0,0 → 1,27
/* File Name : xor16.c */
/* Description : The 16-bit xor */
/* Purpose : To be used by GENLIB */
/* Date : Aug 23, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
int i;
DEF_LOFIG("xor16");
LOCON("a[0:15]", IN, "a[0:15]" );
LOCON("b[0:15]", IN, "b[0:15]" );
LOCON("q[0:15]", OUT, "q[0:15]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
for(i=0;i<16;i++)
LOINS("xr2_x4",NAME("xr%d",i),NAME("a[%d]",i),NAME("b[%d]",i),NAME("q[%d]",i),"vdd","vss",0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/reg16.c
0,0 → 1,30
/* File Name : reg16.c */
/* Description : The 16-bit register */
/* Purpose : To be used by GENLIB */
/* Date : Aug 22, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
int i;
DEF_LOFIG("reg16");
LOCON("d[0:15]", IN, "d[0:15]" );
LOCON("en", IN, "en" );
LOCON("clr", IN, "clr" );
LOCON("q[0:15]", INOUT, "q[0:15]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
for(i=0;i<=15;i++)
{
LOINS("d_latch_glopf",NAME("latch%d",i),NAME("d[%d]",i),"en","clr",NAME("q[%d]",i),"vdd","vss",0);
}
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/idea_heart.c
0,0 → 1,59
/* File Name : idea_heart.c */
/* Description : The idea processor heart */
/* Purpose : To be used by GENLIB */
/* Date : Aug 23, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
DEF_LOFIG("idea_heart");
LOCON("en[1:7]", IN, "en[1:7]" );
LOCON("en_out", IN, "en_out" );
LOCON("sel_in", IN, "sel_in" );
LOCON("x1[0:15]", IN, "x1[0:15]" );
LOCON("x2[0:15]", IN, "x2[0:15]" );
LOCON("x3[0:15]", IN, "x3[0:15]" );
LOCON("x4[0:15]", IN, "x4[0:15]" );
LOCON("z1[0:15]", IN, "z1[0:15]" );
LOCON("z2[0:15]", IN, "z2[0:15]" );
LOCON("z3[0:15]", IN, "z3[0:15]" );
LOCON("z4[0:15]", IN, "z4[0:15]" );
LOCON("z5[0:15]", IN, "z5[0:15]" );
LOCON("z6[0:15]", IN, "z6[0:15]" );
LOCON("z19[0:15]", IN, "z19[0:15]" );
LOCON("z29[0:15]", IN, "z29[0:15]" );
LOCON("z39[0:15]", IN, "z39[0:15]" );
LOCON("z49[0:15]", IN, "z49[0:15]" );
 
 
LOCON("y1[0:15]", OUT, "y1[0:15]" );
LOCON("y2[0:15]", INOUT, "y2[0:15]" );
LOCON("y3[0:15]", INOUT, "y3[0:15]" );
LOCON("y4[0:15]", OUT, "y4[0:15]" );
LOCON("reset", IN, "reset" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
LOINS("mux64_glopg","mux1","x1[15:0]","x2[15:0]","x3[15:0]","x4[15:0]",
"y1x[15:0]","y2x[15:0]","y3x[15:0]","y4x[15:0]",
"sel_in",
"o_mux1[15:0]","o_mux2[15:0]","o_mux3[15:0]","o_mux4[15:0]",
"vdd","vss",0);
 
LOINS("idea_heart_1r_glopf","idea_h_1r","en[1:7]","o_mux1[0:15]","o_mux2[0:15]","o_mux3[0:15]",
"o_mux4[0:15]",
"z1[0:15]","z2[0:15]","z3[0:15]","z4[0:15]","z5[0:15]","z6[0:15]",
"y1x[0:15]","y2x[0:15]","y3x[0:15]","y4x[0:15]","reset","vdd","vss",0);
LOINS("out_trans_glopf","trans","en_out","y1x[0:15]","y2x[0:15]","y3x[0:15]","y4x[0:15]",
"z19[0:15]","z29[0:15]","z39[0:15]","z49[0:15]","y1[0:15]","y2[0:15]","y3[0:15]",
"y4[0:15]","reset","vdd","vss",0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/idea_encryptor_pat_dec.c
0,0 → 1,194
/* File Name : idea_encryptor_pat_dec.c */
/* Description : The decryption test patterns of IDEA encryption block */
/* Purpose : To be used by GENLIB */
/* Date : Aug 23, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include <stdio.h>
#include "genpat.h"
#define interval 28
 
char *inttostr(entier)
int entier;
{
char *str;
str = (char *) mbkalloc (32 * sizeof (char));
sprintf (str, "%d",entier);
return(str);
}
 
main ()
{
int round,i;
int time, max;
 
DEF_GENPAT("idea_encryptor_decrypt");
SETTUNIT ("ns");
/* Inputs */
/* for power supply */
DECLAR ("vdd", ":2", "B", IN, "", "");
DECLAR ("vss", ":2", "B", IN, "", "");
/* for 64-bit input data */
DECLAR ("x1", ":2", "X", IN, "15 downto 0", "");
DECLAR ("x2", ":2", "X", IN, "15 downto 0", "");
DECLAR ("x3", ":2", "X", IN, "15 downto 0", "");
DECLAR ("x4", ":2", "X", IN, "15 downto 0", "");
/* for the 6 16-bit subkeys of each round */
DECLAR ("z1", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z2", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z3", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z4", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z5", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z6", ":2", "X", IN, "15 downto 0", "");
/* for the 4 16-bit subkeys of output transformation state */
DECLAR ("z19", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z29", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z39", ":2", "X", IN, "15 downto 0", "");
DECLAR ("z49", ":2", "X", IN, "15 downto 0", "");
 
/* for control signals */
DECLAR ("clk", ":2", "B", IN, "", "");
DECLAR ("rst", ":2", "B", IN, "", "");
DECLAR ("start", ":2", "B", IN, "", "");
DECLAR ("key_ready", ":2", "B", IN, "", "");
 
DECLAR ("round", ":2", "B", OUT, "2 downto 0","");
DECLAR ("en_key_out", ":2", "B", OUT, "","");
DECLAR ("finish", ":2", "B", OUT, "","");
 
/* Outputs */
/* for 4 16-bit outpus */
DECLAR ("y1", ":2", "X", OUT, "15 downto 0", "");
DECLAR ("y2", ":2", "X", OUT, "15 downto 0", "");
DECLAR ("y3", ":2", "X", OUT, "15 downto 0", "");
DECLAR ("y4", ":2", "X", OUT, "15 downto 0", "");
max =21;
for (round=0; round<8; round++)
{
for (i=0;i<max;i++)
{
if(round == 0)
time = ((round*max) + i) * interval ;
else if(round ==1 ) {
max = 16;
time = ((round*max) + i + 5) * interval; }
else {
max = 16;
time = ((round*max) + i + 5) * interval; }
AFFECT (inttostr(time), "vdd", "0b1");
AFFECT (inttostr(time), "vss", "0b0");
 
if(((time/interval)+2)% 2 == 0)
AFFECT (inttostr(time), "clk", "0b0");
else
AFFECT (inttostr(time), "clk", "0b1");
 
if((time/interval) < 2)
AFFECT (inttostr(time), "rst", "0b1");
else
AFFECT (inttostr(time), "rst", "0b0");
 
if((time/interval) < 5)
{ AFFECT (inttostr(time), "start", "0b0");
AFFECT (inttostr(time), "key_ready", "0b0");
}
else
{ AFFECT (inttostr(time), "start", "0b1");
AFFECT (inttostr(time), "key_ready", "0b1");
}
AFFECT (inttostr(time), "x1", "48226");
AFFECT (inttostr(time), "x2", "26081");
AFFECT (inttostr(time), "x3", "53476");
AFFECT (inttostr(time), "x4", "29722");
if(round == 0)
{ LABEL ("round_1");
AFFECT (inttostr(time), "z1", "26010");
AFFECT (inttostr(time), "z2", "65088");
AFFECT (inttostr(time), "z3", "64960");
AFFECT (inttostr(time), "z4", "59486");
AFFECT (inttostr(time), "z5", "40961");
AFFECT (inttostr(time), "z6", "57346");
}
else if(round == 1)
{ LABEL ("round_2");
AFFECT (inttostr(time), "z1", "52428");
AFFECT (inttostr(time), "z2", "57343");
AFFECT (inttostr(time), "z3", "8191");
AFFECT (inttostr(time), "z4", "13109");
AFFECT (inttostr(time), "z5", "8192");
AFFECT (inttostr(time), "z6", "24576");
}
else if(round == 2)
{ LABEL ("round_3");
AFFECT (inttostr(time), "z1", "46227");
AFFECT (inttostr(time), "z2", "65360");
AFFECT (inttostr(time), "z3", "65392");
AFFECT (inttostr(time), "z4", "50098");
AFFECT (inttostr(time), "z5", "48");
AFFECT (inttostr(time), "z6", "80");
}
else if(round == 3)
{ LABEL ("round_4");
AFFECT (inttostr(time), "z1", "56170");
AFFECT (inttostr(time), "z2", "65296");
AFFECT (inttostr(time), "z3", "47104");
AFFECT (inttostr(time), "z4", "30600");
AFFECT (inttostr(time), "z5", "6144");
AFFECT (inttostr(time), "z6", "10240");
}
else if(round == 4)
{ LABEL ("round_5");
AFFECT (inttostr(time), "z1", "5955");
AFFECT (inttostr(time), "z2", "34816");
AFFECT (inttostr(time), "z3", "38912");
AFFECT (inttostr(time), "z4", "61680");
AFFECT (inttostr(time), "z5", "20");
AFFECT (inttostr(time), "z6", "28");
}
else if(round == 5)
{ LABEL ("round_6");
AFFECT (inttostr(time), "z1", "3781");
AFFECT (inttostr(time), "z2", "65468");
AFFECT (inttostr(time), "z3", "65476");
AFFECT (inttostr(time), "z4", "38230");
AFFECT (inttostr(time), "z5", "36");
AFFECT (inttostr(time), "z6", "44");
}
else if(round == 6)
{ LABEL ("round_7");
AFFECT (inttostr(time), "z1", "30238");
AFFECT (inttostr(time), "z2", "56832");
AFFECT (inttostr(time), "z3", "57856");
AFFECT (inttostr(time), "z4", "21803");
AFFECT (inttostr(time), "z5", "4608");
AFFECT (inttostr(time), "z6", "5632");
}
else
{ max=22;
LABEL ("round_8");
AFFECT (inttostr(time), "z1", "30584");
AFFECT (inttostr(time), "z2", "62976");
AFFECT (inttostr(time), "z3", "65519");
AFFECT (inttostr(time), "z4", "28069");
AFFECT (inttostr(time), "z5", "11");
AFFECT (inttostr(time), "z6", "13");
}
AFFECT (inttostr(time), "z19", "21846");
AFFECT (inttostr(time), "z29", "65531");
AFFECT (inttostr(time), "z39", "65529");
AFFECT (inttostr(time), "z49", "7282");
}
}
SAV_GENPAT ();
}
 
/trunk/structural_c/idea_machine/sm16adder.c
0,0 → 1,29
/* File Name : sm16adder.c */
/* Description : The synchronized modulo 2^16 adder */
/* Purpose : To be used by GENLIB */
/* Date : Aug 22, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
int i;
DEF_LOFIG("sm16adder");
LOCON("a[0:15]", IN, "a[0:15]" );
LOCON("b[0:15]", IN, "b[0:15]" );
LOCON("en", IN, "en" );
LOCON("clr", IN, "clr" );
LOCON("s[0:15]", INOUT, "s[0:15]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
LOINS("m16adder_glopg","sm16a","a[0:15]","b[0:15]","ss[0:15]","vdd","vss",0);
LOINS("reg16_glopf","rg16","ss[0:15]","en","clr","s[0:15]","vdd","vss",0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/idea_heart_1r.c
0,0 → 1,53
/* File Name : idea_heart_1r.c */
/* Description : The one round idea processor heart */
/* Purpose : To be used by GENLIB */
/* Date : Aug 21, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
#include<genlib.h>
main()
{
DEF_LOFIG("idea_heart_1r");
LOCON("en[1:7]", IN, "en[1:7]" );
LOCON("x1[0:15]", IN, "x1[0:15]" );
LOCON("x2[0:15]", IN, "x2[0:15]" );
LOCON("x3[0:15]", IN, "x3[0:15]" );
LOCON("x4[0:15]", IN, "x4[0:15]" );
LOCON("z1[0:15]", IN, "z1[0:15]" );
LOCON("z2[0:15]", IN, "z2[0:15]" );
LOCON("z3[0:15]", IN, "z3[0:15]" );
LOCON("z4[0:15]", IN, "z4[0:15]" );
LOCON("z5[0:15]", IN, "z5[0:15]" );
LOCON("z6[0:15]", IN, "z6[0:15]" );
LOCON("y1[0:15]", INOUT, "y1[0:15]" );
LOCON("y2[0:15]", INOUT, "y2[0:15]" );
LOCON("y3[0:15]", INOUT, "y3[0:15]" );
LOCON("y4[0:15]", INOUT, "y4[0:15]" );
LOCON("reset", IN, "reset" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
LOINS("sm16plus1mul_glopf","mul1","x1[0:15]","z1[0:15]","en[1]","reset","o_mul1[0:15]","vdd","vss",0);
LOINS("sm16adder_glopf","add1","x2[0:15]","z2[0:15]","en[1]","reset","o_add1[0:15]","vdd","vss",0);
LOINS("sm16adder_glopf","add2","x3[0:15]","z3[0:15]","en[1]","reset","o_add2[0:15]","vdd","vss",0);
LOINS("sm16plus1mul_glopf","mul2","x4[0:15]","z4[0:15]","en[1]","reset","o_mul2[0:15]","vdd","vss",0);
LOINS("s16xor_glopf","xr1","o_mul1[0:15]","o_add2[0:15]","en[2]","reset","o_xr1[0:15]","vdd","vss",0);
LOINS("s16xor_glopf","xr2","o_add1[0:15]","o_mul2[0:15]","en[2]","reset","o_xr2[0:15]","vdd","vss",0);
LOINS("sm16plus1mul_glopf","mul3","o_xr1[0:15]","z5[0:15]","en[3]","reset","o_mul3[0:15]","vdd","vss",0);
LOINS("sm16adder_glopf","add3","o_mul3[0:15]","o_xr2[0:15]","en[4]","reset","o_add3[0:15]","vdd","vss",0);
LOINS("sm16plus1mul_glopf","mul4","o_add3[0:15]","z6[0:15]","en[5]","reset","o_mul4[0:15]","vdd","vss",0);
LOINS("sm16adder_glopf","add4","o_mul3[0:15]","o_mul4[0:15]","en[6]","reset","o_add4[0:15]","vdd","vss",0);
LOINS("s16xor_glopf","xr3","o_mul1[0:15]","o_mul4[0:15]","en[7]","reset","y1[0:15]","vdd","vss",0);
LOINS("s16xor_glopf","xr4","o_add2[0:15]","o_mul4[0:15]","en[7]","reset","y2[0:15]","vdd","vss",0);
LOINS("s16xor_glopf","xr5","o_add1[0:15]","o_add4[0:15]","en[7]","reset","y3[0:15]","vdd","vss",0);
LOINS("s16xor_glopf","xr6","o_mul2[0:15]","o_add4[0:15]","en[7]","reset","y4[0:15]","vdd","vss",0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/idea_machine/sm16plus1mul.c
0,0 → 1,33
/* File Name : sm16plus1mul.c */
/* Description : The synchronized modulo 2^16+1 multiplier */
/* Purpose : To be used by GENLIB */
/* Date : Aug 23, 2001 */
/* Version : 1.1 */
/* Author : Martadinata A. */
/* Address : VLSI RG, Dept. of Electrical Engineering ITB, */
/* Bandung, Indonesia */
/* E-mail : marta@ic.vlsi.itb.ac.id */
 
#include<genlib.h>
main()
{
DEF_LOFIG("sm16plus1mul");
LOCON("in1[0:15]", IN, "in1[0:15]" );
LOCON("in2[0:15]", IN, "in2[0:15]" );
LOCON("en", IN, "en" );
LOCON("clr", IN, "clr" );
LOCON("mulout[0:15]", OUT, "mulout[0:15]" );
LOCON("vdd", IN, "vdd" );
LOCON("vss", IN, "vss" );
 
LOINS("comp1_glopg","com1a","in1[15:0]","kout1a[16:0]","vdd","vss",0);
LOINS("comp1_glopg","com1b","in2[15:0]","kout1b[16:0]","vdd","vss",0);
LOINS("mul17_glopg","mul","kout1a[16:0]","kout1b[16:0]","res[31:0]","vdd","vss",0);
LOINS("comp2_glopg","com2","vss","vdd","kout2[0:15]","res[16:31]","res[0:15]",0);
LOINS("subtract16_glopg","sub","res[0:15]","res[16:31]","dif[0:15]","vdd","vss",0);
LOINS("reg16_glopf","reg1","kout2[0:15]","en","clr","r1[0:15]","vdd","vss",0);
LOINS("reg16_glopf","reg2","dif[0:15]","en","clr","r2[0:15]","vdd","vss",0);
LOINS("m16adder_glopg","add","r2[0:15]","r1[0:15]","mulout[0:15]","vdd","vss",0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/key_regulator/multiplier17.c
0,0 → 1,35
// File Name : multiplier17.c
// Description : Multiplier 17 bit
// Author : Mas Adit
// Date : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("multiplier17");
 
LOCON ("a[16:0]", IN, "a[16:0]");
LOCON ("b[16:0]", IN, "b[16:0]");
//LOCON ("o[0:33]", OUT, "o[0:33]");
LOCON ("o17[33:0]", OUT, "o17[33:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
 
for (i = 0; i < 17; i++)
LOINS(NAME("leftshiftregister%d", i), NAME("leftshiftregister%d", i + 1), "a[16:0]",
NAME("b[%d]", i), NAME("r%d[33:0]", i), "vdd", "vss", 0);
 
LOINS ("zero34", "zero34", "o0[33:0]", "vdd", "vss", 0);
LOINS ("fulladder34", "fulladder341", "o0[33:0]", "r0[33:0]", "o1[33:0]", "vdd", "vss", 0);
 
for (i = 1; i < 17; i++)
LOINS("fulladder34", NAME("fulladder34%d", i + 1), NAME("o%d[33:0]", i),
NAME("r%d[33:0]", i), NAME("o%d[33:0]", i + 1), "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/key_regulator/reg16_latch.c
0,0 → 1,29
//Nama file : reg16_latch.c
//Deskripsi : reg 16 + latch
//Author : Mas Adit
//Tanggal : 27 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
DEF_LOFIG ("reg16_latch");
 
LOCON ("a[15:0]", IN, "a[15:0]");
LOCON ("en", IN, "en");
LOCON ("clr", IN, "clr");
LOCON ("cke", IN, "cke");
LOCON ("b[15:0]", INOUT, "b[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("reg16", "reg1", "a[15:0]", "en", "clr", "x[15:0]", "vdd", "vss", 0);
for(i=0; i<16; i++)
{
LOINS ("latch", NAME("latch%d", i), NAME("x[%d]", i), "cke", NAME("b[%d]", i), "vdd", "vss", 0);
}
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/mux288to16_latch.c
0,0 → 1,48
//Nama file : mux288to16_latch.c
//Deskripsi : mux288to16.vbe + latch.c
//Author : Mas Adit
//Tanggal : 25 Agustus 2001
 
#include<genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("mux288to16_latch");
 
LOCON ("i1[15:0]", IN, "i1[15:0]");
LOCON ("i2[15:0]", IN, "i2[15:0]");
LOCON ("i3[15:0]", IN, "i3[15:0]");
LOCON ("i4[15:0]", IN, "i4[15:0]");
LOCON ("i5[15:0]", IN, "i5[15:0]");
LOCON ("i6[15:0]", IN, "i6[15:0]");
LOCON ("i7[15:0]", IN, "i7[15:0]");
LOCON ("i8[15:0]", IN, "i8[15:0]");
LOCON ("i9[15:0]", IN, "i9[15:0]");
LOCON ("i10[15:0]", IN, "i10[15:0]");
LOCON ("i11[15:0]", IN, "i11[15:0]");
LOCON ("i12[15:0]", IN, "i12[15:0]");
LOCON ("i13[15:0]", IN, "i13[15:0]");
LOCON ("i14[15:0]", IN, "i14[15:0]");
LOCON ("i15[15:0]", IN, "i15[15:0]");
LOCON ("i16[15:0]", IN, "i16[15:0]");
LOCON ("i17[15:0]", IN, "i17[15:0]");
LOCON ("i18[15:0]", IN, "i18[15:0]");
LOCON ("en", IN, "en");
LOCON ("clr", IN, "clr");
LOCON ("sel[4:0]", IN, "sel[4:0]");
LOCON ("cke", IN, "cke");
LOCON ("c[15:0]", INOUT, "c[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("mux288to16", "mux1", "i1[15:0]", "i2[15:0]", "i3[15:0]", "i4[15:0]", "i5[15:0]", "i6[15:0]", "i7[15:0]", "i8[15:0]", "i9[15:0]", "i10[15:0]", "i11[15:0]", "i12[15:0]", "i13[15:0]", "i14[15:0]", "i15[15:0]", "i16[15:0]", "i17[15:0]", "i18[15:0]", "en", "clr", "sel[4:0]", "b[15:0]", "vdd", "vss", 0);
for (i=0; i<16; i++)
{
LOINS ("latch", NAME("latch%d", i), NAME("b[%d]", i), "cke", NAME("c[%d]", i), "vdd", "vss", 0);
}
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/key_regulator/gen_inv_mul.c
0,0 → 1,68
//Nama file : gen_inv_mul.c
//Deskripsi : pembangkit inv_mul
//Author : Mas Adit
//Tanggal :26 Agustus 2001
 
#include <genlib.h>
 
main()
{
 
DEF_LOFIG ("gen_inv_mul");
 
LOCON ("i1[15:0]", IN, "i1[15:0]");
LOCON ("i2[15:0]", IN, "i2[15:0]");
LOCON ("i3[15:0]", IN, "i3[15:0]");
LOCON ("i4[15:0]", IN, "i4[15:0]");
LOCON ("i5[15:0]", IN, "i5[15:0]");
LOCON ("i6[15:0]", IN, "i6[15:0]");
LOCON ("i7[15:0]", IN, "i7[15:0]");
LOCON ("i8[15:0]", IN, "i8[15:0]");
LOCON ("i9[15:0]", IN, "i9[15:0]");
LOCON ("i10[15:0]", IN, "i10[15:0]");
LOCON ("i11[15:0]", IN, "i11[15:0]");
LOCON ("i12[15:0]", IN, "i12[15:0]");
LOCON ("i13[15:0]", IN, "i13[15:0]");
LOCON ("i14[15:0]", IN, "i14[15:0]");
LOCON ("i15[15:0]", IN, "i15[15:0]");
LOCON ("i16[15:0]", IN, "i16[15:0]");
LOCON ("i17[15:0]", IN, "i17[15:0]");
LOCON ("i18[15:0]", IN, "i18[15:0]");
LOCON ("clk", IN, "clk");
LOCON ("start", IN, "start");
LOCON ("rst", IN, "rst");
LOCON ("finish", OUT, "finish");
LOCON ("o1[15:0]", OUT, "o1[15:0]");
LOCON ("o2[15:0]", OUT, "o2[15:0]");
LOCON ("o3[15:0]", OUT, "o3[15:0]");
LOCON ("o4[15:0]", OUT, "o4[15:0]");
LOCON ("o5[15:0]", OUT, "o5[15:0]");
LOCON ("o6[15:0]", OUT, "o6[15:0]");
LOCON ("o7[15:0]", OUT, "o7[15:0]");
LOCON ("o8[15:0]", OUT, "o8[15:0]");
LOCON ("o9[15:0]", OUT, "o9[15:0]");
LOCON ("o10[15:0]", OUT, "o10[15:0]");
LOCON ("o11[15:0]", OUT, "o11[15:0]");
LOCON ("o12[15:0]", OUT, "o12[15:0]");
LOCON ("o13[15:0]", OUT, "o13[15:0]");
LOCON ("o14[15:0]", OUT, "o14[15:0]");
LOCON ("o15[15:0]", OUT, "o15[15:0]");
LOCON ("o16[15:0]", OUT, "o16[15:0]");
LOCON ("o17[15:0]", OUT, "o17[15:0]");
LOCON ("o18[15:0]", OUT, "o18[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("mux288to16_latch", "mux1", "i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]",
"i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]", "i1[15:0]",
"i1[15:0]", "i1[15:0]", "en_in", "rst", "sel_in[4:0]", "start", "zi[15:0]", "vdd", "vss", 0);
LOINS ("invmuls", "invmuls1", "zi[15:0]", "rst", "en_pipe", "sel", "start", "zo[15:0]", "vdd", "vss", 0);
LOINS ("kontrol_invmul", "kontrol_invmul1", "start", "clk", "rst", "finish", "en_in", "sel_in[4:0]", "sel", "en_pipe",
"en_out", "sel_out[4:0]", "vdd", "vss", 0);
LOINS ("dec16to288_latch", "dec1", "zo[15:0]", "en_out", "rst", "sel_out[4:0]", "start", "o1[15:0]", "o2[15:0]",
"o3[15:0]", "o4[15:0]", "o5[15:0]", "o6[15:0]", "o7[15:0]", "o8[15:0]", "o9[15:0]", "o10[15:0]", "o11[15:0]",
"o12[15:0]", "o13[15:0]", "o14[15:0]", "o15[15:0]", "o16[15:0]", "o17[15:0]", "o18[15:0]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/generate_key.c
0,0 → 1,76
//Nama file : generate_key.c
//Deskripsi : blok pembangkit kunci enkripsi dan deskripsi
//Author : Mas Adit
//Tanggal : 29 Agustus 2001
 
#include <genlib.h>
 
main ()
{
DEF_LOFIG ("generate_key");
 
LOCON ("dt_key[127:0]", IN, "dt_key[127:0]");
LOCON ("clk", IN, "clk");
LOCON ("rst", IN, "rst");
LOCON ("start", IN, "start");
LOCON ("E", IN, "E");
LOCON ("en_keyout", IN, "en_keyout");
LOCON ("round[2:0]", IN, "round[2:0]");
LOCON ("key_ready", INOUT, "key_ready");
LOCON ("z1[15:0]", OUT, "z1[15:0]");
LOCON ("z2[15:0]", OUT, "z2[15:0]");
LOCON ("z3[15:0]", OUT, "z3[15:0]");
LOCON ("z4[15:0]", OUT, "z4[15:0]");
LOCON ("z5[15:0]", OUT, "z5[15:0]");
LOCON ("z6[15:0]", OUT, "z6[15:0]");
LOCON ("z91[15:0]", OUT, "z91[15:0]");
LOCON ("z92[15:0]", OUT, "z92[15:0]");
LOCON ("z93[15:0]", OUT, "z93[15:0]");
LOCON ("z94[15:0]", OUT, "z94[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("en_key", "enkey1", "dt_key[127:0]", "clk", "s_enkey", "rst_all", "f_enkey", "oe1_1[15:0]", "oe1_2[15:0]",
"oe1_3[15:0]", "oe1_4[15:0]", "oe1_5[15:0]", "oe1_6[15:0]", "oe2_1[15:0]", "oe2_2[15:0]", "oe2_3[15:0]",
"oe2_4[15:0]", "oe2_5[15:0]", "oe2_6[15:0]", "oe3_1[15:0]", "oe3_2[15:0]", "oe3_3[15:0]", "oe3_4[15:0]",
"oe3_5[15:0]", "oe3_6[15:0]", "oe4_1[15:0]", "oe4_2[15:0]", "oe4_3[15:0]", "oe4_4[15:0]", "oe4_5[15:0]",
"oe4_6[15:0]", "oe5_1[15:0]", "oe5_2[15:0]", "oe5_3[15:0]", "oe5_4[15:0]", "oe5_5[15:0]", "oe5_6[15:0]",
"oe6_1[15:0]", "oe6_2[15:0]", "oe6_3[15:0]", "oe6_4[15:0]", "oe6_5[15:0]", "oe6_6[15:0]", "oe7_1[15:0]",
"oe7_2[15:0]", "oe7_3[15:0]", "oe7_4[15:0]", "oe7_5[15:0]", "oe7_6[15:0]", "oe8_1[15:0]", "oe8_2[15:0]",
"oe8_3[15:0]", "oe8_4[15:0]", "oe8_5[15:0]", "oe8_6[15:0]", "oe9_1[15:0]", "oe9_2[15:0]", "oe9_3[15:0]",
"oe9_4[15:0]", "vdd", "vss", 0);
LOINS ("gen_inv_mul", "gen_inv_mul1", "oe1_1[15:0]", "oe1_4[15:0]", "oe2_1[15:0]", "oe2_4[15:0]", "oe3_1[15:0]",
"oe3_4[15:0]", "oe4_1[15:0]", "oe4_4[15:0]", "oe5_1[15:0]", "oe5_4[15:0]", "oe6_1[15:0]", "oe6_4[15:0]",
"oe7_1[15:0]", "oe7_4[15:0]", "oe8_1[15:0]", "oe8_4[15:0]", "oe9_1[15:0]", "oe9_4[15:0]", "clk", "s_invmul",
"rst_all", "f_invmul", "od9_1[15:0]", "od9_4[15:0]", "od8_1[15:0]", "od8_4[15:0]", "od7_1[15:0]", "od7_4[15:0]",
"od6_1[15:0]", "od6_4[15:0]", "od5_1[15:0]", "od5_4[15:0]", "od4_1[15:0]", "od4_4[15:0]", "od3_1[15:0]",
"od3_4[15:0]", "od2_1[15:0]", "od2_4[15:0]", "od1_1[15:0]", "od1_4[15:0]", "vdd", "vss", 0);
LOINS ("gen_inv_add", "gen_inv_add1", "oe1_2[15:0]", "oe1_3[15:0]", "oe2_2[15:0]", "oe2_3[15:0]", "oe3_2[15:0]",
"oe3_3[15:0]", "oe4_2[15:0]", "oe4_3[15:0]", "oe5_2[15:0]", "oe5_3[15:0]", "oe6_2[15:0]", "oe6_3[15:0]",
"oe7_2[15:0]", "oe7_3[15:0]", "oe8_2[15:0]", "oe8_3[15:0]", "oe9_2[15:0]", "oe9_3[15:0]", "clk", "rst_all",
"s_invadd", "od9_2[15:0]", "od9_3[15:0]", "od8_3[15:0]", "od8_2[15:0]", "od7_3[15:0]", "od7_2[15:0]",
"od6_3[15:0]", "od6_2[15:0]", "od5_3[15:0]", "od5_2[15:0]", "od4_3[15:0]", "od4_2[15:0]", "od3_3[15:0]",
"od3_2[15:0]", "od2_3[15:0]", "od2_2[15:0]", "od1_2[15:0]", "od1_3[15:0]", "f_invadd", "vdd", "vss", 0);
LOINS ("key_select", "key_select1", "oe1_1[15:0]", "oe1_2[15:0]", "oe1_3[15:0]", "oe1_4[15:0]", "oe1_5[15:0]",
"oe1_6[15:0]", "oe2_1[15:0]", "oe2_2[15:0]", "oe2_3[15:0]", "oe2_4[15:0]", "oe2_5[15:0]", "oe2_6[15:0]",
"oe3_1[15:0]", "oe3_2[15:0]", "oe3_3[15:0]", "oe3_4[15:0]", "oe3_5[15:0]", "oe3_6[15:0]", "oe4_1[15:0]",
"oe4_2[15:0]", "oe4_3[15:0]", "oe4_4[15:0]", "oe4_5[15:0]", "oe4_6[15:0]", "oe5_1[15:0]", "oe5_2[15:0]",
"oe5_3[15:0]", "oe5_4[15:0]", "oe5_5[15:0]", "oe5_6[15:0]", "oe6_1[15:0]", "oe6_2[15:0]", "oe6_3[15:0]",
"oe6_4[15:0]", "oe6_5[15:0]", "oe6_6[15:0]", "oe7_1[15:0]", "oe7_2[15:0]", "oe7_3[15:0]", "oe7_4[15:0]",
"oe7_5[15:0]", "oe7_6[15:0]", "oe8_1[15:0]", "oe8_2[15:0]", "oe8_3[15:0]", "oe8_4[15:0]", "oe8_5[15:0]",
"oe8_6[15:0]", "oe9_1[15:0]", "oe9_2[15:0]", "oe9_3[15:0]", "oe9_4[15:0]", "od1_1[15:0]", "od1_2[15:0]", "od1_3[15:0]", "od1_4[15:0]", "oe8_5[15:0]",
"oe8_6[15:0]", "od2_1[15:0]", "od2_2[15:0]", "od2_3[15:0]", "od2_4[15:0]", "oe7_5[15:0]", "oe7_6[15:0]",
"od3_1[15:0]", "od3_2[15:0]", "od3_3[15:0]", "od3_4[15:0]", "oe6_5[15:0]", "oe6_6[15:0]", "od4_1[15:0]",
"od4_2[15:0]", "od4_3[15:0]", "od4_4[15:0]", "oe5_5[15:0]", "oe5_6[15:0]", "od5_1[15:0]", "od5_2[15:0]",
"od5_3[15:0]", "od5_4[15:0]", "oe4_5[15:0]", "oe4_6[15:0]", "od6_1[15:0]", "od6_2[15:0]", "od6_3[15:0]",
"od6_4[15:0]", "oe3_5[15:0]", "oe3_6[15:0]", "od7_1[15:0]", "od7_2[15:0]", "od7_3[15:0]", "od7_4[15:0]",
"oe2_5[15:0]", "oe2_6[15:0]", "od8_1[15:0]", "od8_2[15:0]", "od8_3[15:0]", "od8_4[15:0]", "oe1_5[15:0]",
"oe1_6[15:0]", "od9_1[15:0]", "od9_2[15:0]", "od9_3[15:0]", "od9_4[15:0]", "E", "en_keyout", "rst_all",
"key_ready", "round[2:0]", "z1[15:0]", "z2[15:0]", "z3[15:0]", "z4[15:0]", "z5[15:0]", "z6[15:0]", "z91[15:0]",
"z92[15:0]", "z93[15:0]", "z94[15:0]", "vdd", "vss", 0);
LOINS ("kontrol_kunci", "kontrol_kunci1", "clk", "start", "rst", "f_enkey", "f_invmul", "f_invadd", "rst_all", "key_ready",
"s_enkey", "s_invmul", "s_invadd", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/mux8to4_latch.c
0,0 → 1,43
//Nama file : mux8to4_latch.c
//Deskripsi : mux 8 to 4 16 bit + latch
//Author : Mas Adit
//Tanggal : 27 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
DEF_LOFIG ("mux8to4_latch");
LOCON ("i1[15:0]", IN, "i1[15:0]");
LOCON ("i2[15:0]", IN, "i2[15:0]");
LOCON ("i3[15:0]", IN, "i3[15:0]");
LOCON ("i4[15:0]", IN, "i4[15:0]");
LOCON ("i5[15:0]", IN, "i5[15:0]");
LOCON ("i6[15:0]", IN, "i6[15:0]");
LOCON ("i7[15:0]", IN, "i7[15:0]");
LOCON ("i8[15:0]", IN, "i8[15:0]");
LOCON ("en", IN, "en");
LOCON ("clr", IN, "clr");
LOCON ("sel", IN, "sel");
LOCON ("cke", IN, "cke");
LOCON ("o1[15:0]", INOUT, "o1[15:0]");
LOCON ("o2[15:0]", INOUT, "o2[15:0]");
LOCON ("o3[15:0]", INOUT, "o3[15:0]");
LOCON ("o4[15:0]", INOUT, "o4[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss" , IN, "vss");
 
LOINS ("mux8to4", "mux1", "i1[15:0]", "i2[15:0]", "i3[15:0]", "i4[15:0]", "i5[15:0]", "i6[15:0]", "i7[15:0]", "i8[15:0]", "en", "clr", "sel", "x1[15:0]", "x2[15:0]", "x3[15:0]", "x4[15:0]", "vdd", "vss", 0);
for (i=0; i<16; i++)
{
LOINS ("latch", NAME("latch%d", i), NAME("x1[%d]", i), "cke", NAME("o1[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 16), NAME("x2[%d]", i), "cke", NAME("o2[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 32), NAME("x3[%d]", i), "cke", NAME("o3[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 48), NAME("x4[%d]", i), "cke", NAME("o4[%d]", i), "vdd", "vss", 0);
}
 
SAVE_LOFIG();
exit(0);
}
 
/trunk/structural_c/key_regulator/ctr_enkey1.c
0,0 → 1,30
//Nama file : ctr_enkey1.c
//Deskripsi : kontrol pembangkit kunci enkripsi pada penggabungan
//Author : Mas Adit
//Tanggal : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
DEF_LOFIG ("ctr_enkey1");
 
LOCON ("clk", IN, "clk");
LOCON ("start", IN, "start");
LOCON ("rst", IN, "rst");
LOCON ("qiu[2:0]", INOUT, "qiu[2:0]");
LOCON ("finish", OUT, "finish");
LOCON ("en_shft", OUT, "en_shft");
LOCON ("sel1", OUT, "sel1");
LOCON ("sel2", OUT, "sel2");
LOCON ("en_out", OUT, "en_out");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ( "ctr_enkey", "ctr_enkey0", "clk", "rst", "start", "qiu[2:0]", "en_shft", "count_en", "sel1", "sel2",
"count_ck", "finish", "en_out", "vdd", "vss", 0);
LOINS ("count3_latch", "count1", "count_clk", "count_en", "rst", "qiu[2:0]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/mul17.c
0,0 → 1,28
//Nama file : mul17.c
//Deskripsi : blok multiplier 17 x 17 bit
//Author : Mas Adit
//Tanggal : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("mul17");
 
LOCON ("p[16:0]", IN, "p[16:0]");
LOCON ("q[16:0]", IN, "q[16:0]");
LOCON ("has[33:0]", OUT, "has[33:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("multiplier17", "multiplier1", "p[16:0]", "q[16:0]", "r0[33:0]", "r1[33:0]", "r2[33:0]", "r3[33:0]", "r4[33:0]",
"r5[33:0]", "r6[33:0]", "r7[33:0]", "r8[33:0]", "r9[33:0]", "r10[33:0]", "r11[33:0]", "r12[33:0]", "r13[33:0]",
"r14[33:0]", "r15[33:0]", "r16[33:0]", "o0[33:0]", "o1[33:0]", "o2[33:0]", "o3[33:0]", "o4[33:0]", "o5[33:0]",
"o6[33:0]", "o7[33:0]", "o8[33:0]", "o9[33:0]", "o10[33:0]", "o11[33:0]", "o12[33:0]", "o13[33:0]", "o14[33:0]",
"o15[33:0]", "o16[33:0]", "has[33:0]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/fullsubstractor16.c
0,0 → 1,30
// File Name : fullsubstractor16.c
// Description : Full Substractor 16 bit
// Author : Mas Adit
// Date : 29 Agustus 2001
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("fullsubstractor16");
 
LOCON ("a[15:0]", IN, "a[15:0]");
LOCON ("b[15:0]", IN, "b[15:0]");
LOCON ("diff[15:0]", OUT, "diff[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("zero_x0", "zero1", "nol", "vdd", "vss", 0);
LOINS ("fullsubstractor", "fullsubstractor1", "a[0]", "b[0]", "nol", "diff[0]", "bout0", "vdd", "vss", 0);
 
for (i = 1; i < 15; i++)
LOINS("fullsubstractor", NAME("fullsubstractor%d", i + 1), NAME("a[%d]", i), NAME("b[%d]", i),
NAME("bout%d", i - 1), NAME("diff[%d]", i), NAME("bout%d", i), "vdd", "vss", 0);
 
LOINS ("fullsubstractorbout", "fullsubstarctor16", "a[15]", "b[15]", "bout14", "diff[15]", "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/key_regulator/fulladder16.c
0,0 → 1,31
// File Name : fulladder16.c
// Description : Full Adder 16 bit
// Author : Mas Adit
// Date : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("fulladder16");
 
LOCON ("a[15:0]", IN, "a[15:0]");
LOCON ("b[15:0]", IN, "b[15:0]");
LOCON ("sum[15:0]", OUT, "sum[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("zero_x0", "zero1", "nol", "vdd", "vss", 0);
LOINS ("fulladder", "fulladder1", "a[0]", "b[0]", "nol", "sum[0]", "cout0", "vdd", "vss", 0);
 
for (i = 1; i < 15; i++)
LOINS("fulladder", NAME("fulladder%d", i + 1), NAME("a[%d]", i), NAME("b[%d]", i),
NAME("cout%d", i - 1), NAME("sum[%d]", i), NAME("cout%d", i), "vdd", "vss", 0);
 
LOINS ("fulladdercout", "fulladder16", "a[15]", "b[15]", "cout14", "sum[15]", "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/key_regulator/fulladder34.c
0,0 → 1,31
// File Name : fulladder34.c
// Description : Full Adder 34 bit
// Author : Mas Adit
// Date : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("fulladder34");
 
LOCON ("a[33:0]", IN, "a[33:0]");
LOCON ("b[33:0]", IN, "b[33:0]");
LOCON ("sum[33:0]", OUT, "sum[33:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("zero_x0", "zero1", "nol", "vdd", "vss", 0);
LOINS ("fulladder", "fulladder1", "a[0]", "b[0]", "nol", "sum[0]", "cout0", "vdd", "vss", 0);
 
for (i = 1; i < 33; i++)
LOINS("fulladder", NAME("fulladder%d", i + 1), NAME("a[%d]", i), NAME("b[%d]", i),
NAME("cout%d", i - 1), NAME("sum[%d]", i), NAME("cout%d", i), "vdd", "vss", 0);
 
LOINS ("fulladdercout", "fulladder34", "a[33]", "b[33]", "cout32", "sum[33]", "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/key_regulator/en_key.c
0,0 → 1,87
//Nama file : en_key.c
//Deskripsi : blok pembangkit kunci enkripsi
//Author : Mas Adit
//Tanggal : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
DEF_LOFIG ("en_key");
LOCON ("key_in[127:0]", IN, "key_in[127:0]");
LOCON ("clk", IN, "clk");
LOCON ("start", IN, "start");
LOCON ("rst", IN, "rst");
LOCON ("finish", OUT, "finish");
LOCON ("o1_1[15:0]", OUT, "o1_1[15:0]");
LOCON ("o1_2[15:0]", OUT, "o1_2[15:0]");
LOCON ("o1_3[15:0]", OUT, "o1_3[15:0]");
LOCON ("o1_4[15:0]", OUT, "o1_4[15:0]");
LOCON ("o1_5[15:0]", OUT, "o1_5[15:0]");
LOCON ("o1_6[15:0]", OUT, "o1_6[15:0]");
LOCON ("o2_1[15:0]", OUT, "o2_1[15:0]");
LOCON ("o2_2[15:0]", OUT, "o2_2[15:0]");
LOCON ("o2_3[15:0]", OUT, "o2_3[15:0]");
LOCON ("o2_4[15:0]", OUT, "o2_4[15:0]");
LOCON ("o2_5[15:0]", OUT, "o2_5[15:0]");
LOCON ("o2_6[15:0]", OUT, "o2_6[15:0]");
LOCON ("o3_1[15:0]", OUT, "o3_1[15:0]");
LOCON ("o3_2[15:0]", OUT, "o3_2[15:0]");
LOCON ("o3_3[15:0]", OUT, "o3_3[15:0]");
LOCON ("o3_4[15:0]", OUT, "o3_4[15:0]");
LOCON ("o3_5[15:0]", OUT, "o3_5[15:0]");
LOCON ("o3_6[15:0]", OUT, "o3_6[15:0]");
LOCON ("o4_1[15:0]", OUT, "o4_1[15:0]");
LOCON ("o4_2[15:0]", OUT, "o4_2[15:0]");
LOCON ("o4_3[15:0]", OUT, "o4_3[15:0]");
LOCON ("o4_4[15:0]", OUT, "o4_4[15:0]");
LOCON ("o4_5[15:0]", OUT, "o4_5[15:0]");
LOCON ("o4_6[15:0]", OUT, "o4_6[15:0]");
LOCON ("o5_1[15:0]", OUT, "o5_1[15:0]");
LOCON ("o5_2[15:0]", OUT, "o5_2[15:0]");
LOCON ("o5_3[15:0]", OUT, "o5_3[15:0]");
LOCON ("o5_4[15:0]", OUT, "o5_4[15:0]");
LOCON ("o5_5[15:0]", OUT, "o5_5[15:0]");
LOCON ("o5_6[15:0]", OUT, "o5_6[15:0]");
LOCON ("o6_1[15:0]", OUT, "o6_1[15:0]");
LOCON ("o6_2[15:0]", OUT, "o6_2[15:0]");
LOCON ("o6_3[15:0]", OUT, "o6_3[15:0]");
LOCON ("o6_4[15:0]", OUT, "o6_4[15:0]");
LOCON ("o6_5[15:0]", OUT, "o6_5[15:0]");
LOCON ("o6_6[15:0]", OUT, "o6_6[15:0]");
LOCON ("o7_1[15:0]", OUT, "o7_1[15:0]");
LOCON ("o7_2[15:0]", OUT, "o7_2[15:0]");
LOCON ("o7_3[15:0]", OUT, "o7_3[15:0]");
LOCON ("o7_4[15:0]", OUT, "o7_4[15:0]");
LOCON ("o7_5[15:0]", OUT, "o7_5[15:0]");
LOCON ("o7_6[15:0]", OUT, "o7_6[15:0]");
LOCON ("o8_1[15:0]", OUT, "o8_1[15:0]");
LOCON ("o8_2[15:0]", OUT, "o8_2[15:0]");
LOCON ("o8_3[15:0]", OUT, "o8_3[15:0]");
LOCON ("o8_4[15:0]", OUT, "o8_4[15:0]");
LOCON ("o8_5[15:0]", OUT, "o8_5[15:0]");
LOCON ("o8_6[15:0]", OUT, "o8_6[15:0]");
LOCON ("o9_1[15:0]", OUT, "o9_1[15:0]");
LOCON ("o9_2[15:0]", OUT, "o9_2[15:0]");
LOCON ("o9_3[15:0]", OUT, "o9_3[15:0]");
LOCON ("o9_4[15:0]", OUT, "o9_4[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("shift25", "shift1", "key_in[127:0]", "rst", "shft_en", "sel_1", "sel_2", "out_shift[127:0]", "vdd", "vss", 0);
LOINS ("ctr_enkey1", "ctr_enkey1", "clk", "start", "rst", "qiu[2:0]", "finish", "shft_en", "sel_1", "sel_2",
"dec_en", "vdd", "vss", 0);
LOINS ("dec128to832", "dec1", "out_shift[127:0]", "dec_en", "rst", "qiu[2:0]", "o1_1[15:0]", "o1_2[15:0]",
"o1_3[15:0]", "o1_4[15:0]", "o1_5[15:0]", "o1_6[15:0]", "o2_1[15:0]", "o2_2[15:0]",
"o2_3[15:0]", "o2_4[15:0]", "o2_5[15:0]", "o2_6[15:0]", "o3_1[15:0]", "o3_2[15:0]",
"o3_3[15:0]", "o3_4[15:0]", "o3_5[15:0]", "o3_6[15:0]", "o4_1[15:0]", "o4_2[15:0]",
"o4_3[15:0]", "o4_4[15:0]", "o4_5[15:0]", "o4_6[15:0]", "o5_1[15:0]", "o5_2[15:0]",
"o5_3[15:0]", "o5_4[15:0]", "o5_5[15:0]", "o5_6[15:0]", "o6_1[15:0]", "o6_2[15:0]",
"o6_3[15:0]", "o6_4[15:0]", "o6_5[15:0]", "o6_6[15:0]", "o7_1[15:0]", "o7_2[15:0]",
"o7_3[15:0]", "o7_4[15:0]", "o7_5[15:0]", "o7_6[15:0]", "o8_1[15:0]", "o8_2[15:0]",
"o8_3[15:0]", "o8_4[15:0]", "o8_5[15:0]", "o8_6[15:0]", "o9_1[15:0]", "o9_2[15:0]",
"o9_3[15:0]", "o9_4[15:0]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/fulladder17.c
0,0 → 1,33
// File Name : fulladder17.c
// Description : Full Adder 17 bit
// Author : Mas Adit
// Date : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("fulladder17");
 
LOCON ("a[16:0]", IN, "a[16:0]");
LOCON ("b[16:0]", IN, "b[16:0]");
LOCON ("sum[17:0]", OUT, "sum[17:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("zero_x0", "zero1", "nol", "vdd", "vss", 0);
LOINS ("fulladder", "fulladder1", "a[0]", "b[0]", "nol", "sum[0]", "cout0", "vdd", "vss", 0);
 
for (i = 1; i < 16; i++)
{
LOINS ("fulladder", NAME("fulladder%d", i + 1), NAME("a[%d]", i), NAME("b[%d]", i),
NAME("cout%d", i - 1), NAME("sum[%d]", i), NAME("cout%d", i), "vdd", "vss", 0);
}
 
LOINS ("fulladder", "fulladder17", "a[16]", "b[16]", "cout15", "sum[16]", "sum[17]", "vdd", "vss", 0);
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/key_regulator/kontrol_invadd.c
0,0 → 1,32
//Nama file : kontrol_invadd.c
//Deskripsi : kontrol inv_add pada penggabungan
//Author : Mas Adit
//Tanggal : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("kontrol_invadd");
 
LOCON ("start", IN, "start");
LOCON ("clk", IN, "clk");
LOCON ("rst", IN, "rst");
LOCON ("sel_in[4:0]", OUT, "sel_in[4:0]");
LOCON ("sel_out[4:0]", OUT, "sel_out[4:0]");
LOCON ("en_in", OUT, "en_in");
LOCON ("en_out", OUT, "en_out");
LOCON ("finish", OUT, "finish");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("kontrol_utama_invadd", "kontrol_utama_invadd1", "clk", "rst", "start", "sel_in[4:0]", "sel_out[4:0]",
"c_cdtin", "en_cdtin", "c_cdtout", "en_cdtout", "en_out", "en_in", "finish", "vdd", "vss", 0);
LOINS ("count5_latch", "count1", "c_cdtin", "en_cdtin", "rst", "sel_in[4:0]", "vdd", "vss", 0);
LOINS ("count5_latch", "count2", "c_cdtout", "en_cdtout", "rst", "sel_out[4:0]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/mux12to6_latch.c
0,0 → 1,52
//Nama file : mux12to6_latch.c
//Deskripsi : mux 12 to 6 16 bit + latch
//Author : Mas Adit
//Tanggal : 27 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
DEF_LOFIG ("mux12to6_latch");
LOCON ("i1[15:0]", IN, "i1[15:0]");
LOCON ("i2[15:0]", IN, "i2[15:0]");
LOCON ("i3[15:0]", IN, "i3[15:0]");
LOCON ("i4[15:0]", IN, "i4[15:0]");
LOCON ("i5[15:0]", IN, "i5[15:0]");
LOCON ("i6[15:0]", IN, "i6[15:0]");
LOCON ("i7[15:0]", IN, "i7[15:0]");
LOCON ("i8[15:0]", IN, "i8[15:0]");
LOCON ("i9[15:0]", IN, "i9[15:0]");
LOCON ("i10[15:0]", IN, "i10[15:0]");
LOCON ("i11[15:0]", IN, "i11[15:0]");
LOCON ("i12[15:0]", IN, "i12[15:0]");
LOCON ("en", IN, "en");
LOCON ("clr", IN, "clr");
LOCON ("sel", IN, "sel");
LOCON ("cke", IN, "cke");
LOCON ("o1[15:0]", INOUT, "o1[15:0]");
LOCON ("o2[15:0]", INOUT, "o2[15:0]");
LOCON ("o3[15:0]", INOUT, "o3[15:0]");
LOCON ("o4[15:0]", INOUT, "o4[15:0]");
LOCON ("o5[15:0]", INOUT, "o5[15:0]");
LOCON ("o6[15:0]", INOUT, "o6[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss" , IN, "vss");
 
LOINS ("mux12to6", "mux1", "i1[15:0]", "i2[15:0]", "i3[15:0]", "i4[15:0]", "i5[15:0]", "i6[15:0]", "i7[15:0]", "i8[15:0]", "i9[15:0]", "i10[15:0]", "i11[15:0]", "i12[15:0]", "en", "clr", "sel", "x1[15:0]", "x2[15:0]", "x3[15:0]", "x4[15:0]", "x5[15:0]", "x6[15:0]", "vdd", "vss", 0);
for (i=0; i<16; i++)
{
LOINS ("latch", NAME("latch%d", i), NAME("x1[%d]", i), "cke", NAME("o1[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 16), NAME("x2[%d]", i), "cke", NAME("o2[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 32), NAME("x3[%d]", i), "cke", NAME("o3[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 48), NAME("x4[%d]", i), "cke", NAME("o4[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 64), NAME("x5[%d]", i), "cke", NAME("o5[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 80), NAME("x6[%d]", i), "cke", NAME("o6[%d]", i), "vdd", "vss", 0);
 
}
 
SAVE_LOFIG();
exit(0);
}
 
/trunk/structural_c/key_regulator/substract16.c
0,0 → 1,31
//Nama file : substract16.c
//Deskripsi : blok substract 2 input 16 bit
//Author : Mas Adit
//Tanggal : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
DEF_LOFIG ("substract16");
 
LOCON ("a[15:0]", IN, "a[15:0]");
LOCON ("b[15:0]", IN, "b[15:0]");
LOCON ("bin", IN, "bin");
LOCON ("diff[15:0]", OUT, "diff[15:0]");
LOCON ("bout", OUT, "bout");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("substract", "substract0", "a[0]", "b[0]", "bin", "diff[0]", "boutx[0]", "vdd", "vss", 0);
for (i=1; i<15; i++)
{
LOINS ("substract", NAME("substract%d", i), NAME("a[%d]", i), NAME("b[%d]", i), NAME("boutx[%d]", i - 1),
NAME("diff[%d]", i), NAME("boutx[%d]", i), "vdd", "vss", 0);
}
LOINS ("substract", "substract15", "a[15]", "b[15]", "boutx[14]", "diff[15]", "bout", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/dec16to288_latch.c
0,0 → 1,67
//Nama file : dec16to288_latch.c
//Deskripsi : dec 16 to 288 16 bit + latch
//Author : Mas Adit
//Tanggal : 27 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
DEF_LOFIG ("dec16to288_latch");
LOCON ("a[15:0]", IN, "a[15:0]");
LOCON ("en", IN, "en");
LOCON ("clr", IN, "clr");
LOCON ("sel[4:0]", IN, "sel[4:0]");
LOCON ("cke", IN, "cke");
LOCON ("o1[15:0]", INOUT, "o1[15:0]");
LOCON ("o2[15:0]", INOUT, "o2[15:0]");
LOCON ("o3[15:0]", INOUT, "o3[15:0]");
LOCON ("o4[15:0]", INOUT, "o4[15:0]");
LOCON ("o5[15:0]", INOUT, "o5[15:0]");
LOCON ("o6[15:0]", INOUT, "o6[15:0]");
 
 
LOCON ("o7[15:0]", INOUT, "o7[15:0]");
LOCON ("o8[15:0]", INOUT, "o8[15:0]");
LOCON ("o9[15:0]", INOUT, "o9[15:0]");
LOCON ("o10[15:0]", INOUT, "o10[15:0]");
LOCON ("o11[15:0]", INOUT, "o11[15:0]");
LOCON ("o12[15:0]", INOUT, "o12[15:0]");
LOCON ("o13[15:0]", INOUT, "o13[15:0]");
LOCON ("o14[15:0]", INOUT, "o14[15:0]");
LOCON ("o15[15:0]", INOUT, "o15[15:0]");
LOCON ("o16[15:0]", INOUT, "o16[15:0]");
LOCON ("o17[15:0]", INOUT, "o17[15:0]");
LOCON ("o18[15:0]", INOUT, "o18[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss" , IN, "vss");
 
LOINS ("dec16to288", "dec1", "a[15:0]", "en", "clr", "sel[4:0]", "x1[15:0]", "x2[15:0]", "x3[15:0]", "x[15:0]", "x5[15:0]", "x6[15:0]", "x7[15:0]", "x8[15:0]", "x9[15:0]", "x10[15:0]", "x11[15:0]", "x12[15:0]", "x13[15:0]", "x14[15:0]", "x15[15:0]", "x16[15:0]", "x17[15:0]", "x18[15:0]", "vdd", "vss", 0);
for (i=0; i<16; i++)
{
LOINS ("latch", NAME("latch%d", i), NAME("x1[%d]", i), "cke", NAME("o1[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 16), NAME("x2[%d]", i), "cke", NAME("o2[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 32), NAME("x3[%d]", i), "cke", NAME("o3[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 48), NAME("x4[%d]", i), "cke", NAME("o4[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 64), NAME("x5[%d]", i), "cke", NAME("o5[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 80), NAME("x6[%d]", i), "cke", NAME("o6[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 96), NAME("x7[%d]", i), "cke", NAME("o1[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 112), NAME("x8[%d]", i), "cke", NAME("o2[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 128), NAME("x9[%d]", i), "cke", NAME("o3[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 144), NAME("x10[%d]", i), "cke", NAME("o4[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 160), NAME("x11[%d]", i), "cke", NAME("o5[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 176), NAME("x12[%d]", i), "cke", NAME("o6[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 192), NAME("x13[%d]", i), "cke", NAME("o1[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 208), NAME("x14[%d]", i), "cke", NAME("o2[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 224), NAME("x15[%d]", i), "cke", NAME("o3[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 240), NAME("x16[%d]", i), "cke", NAME("o4[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 256), NAME("x17[%d]", i), "cke", NAME("o5[%d]", i), "vdd", "vss", 0);
LOINS ("latch", NAME("latch%d", i + 272), NAME("x18[%d]", i), "cke", NAME("o6[%d]", i), "vdd", "vss", 0);
 
}
 
SAVE_LOFIG();
exit(0);
}
 
/trunk/structural_c/key_regulator/kontrol_invmul.c
0,0 → 1,35
//Nama file : kontrol_invmul.c
//Deskripsi : kontrol inv_mul mod(2^16 + 1)
//Author : Mas Adit
//Tanggal : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
DEF_LOFIG ("kontrol_invmul");
 
LOCON ("start", IN, "start");
LOCON ("clk", IN, "clk");
LOCON ("rst", IN, "rst");
LOCON ("finish", OUT, "finish");
LOCON ("en_in", OUT, "en_in");
LOCON ("sel_in[4:0]", OUT, "sel_in[4:0]");
LOCON ("sel", OUT, "sel");
LOCON ("en_pipe", OUT, "en_pipe");
LOCON ("en_out", OUT, "en_out");
LOCON ("sel_out[4:0]", OUT, "sel_out[4:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("kontrol_utama_invmul", "kontrol_utama_invmul1", "start", "clk", "rst", "n_stage[1:0]", "n_iterasi[3:0]",
"sel_in[4:0]", "sel_out[4:0]", "en_cstage", "c_cstage", "en_cite", "c_cite", "en_cdtin", "c_cdtin",
"en_cdtout", "c_cdtout", "en_in", "en_out", "en_pipe", "sel", "finish", "vdd", "vss", 0);
LOINS ("count2_latch", "count1", "c_cstage", "en_cstage", "rst", "n_stage[1:0]", "vdd", "vss", 0);
LOINS ("count4_latch", "count2", "c_cite", "en_cite", "rst", "n_iterasi[3:0]", "vdd", "vss", 0);
LOINS ("count5_latch", "count3", "c_cdtin", "en_cdtin", "rst", "sel_in[4:0]", "vdd", "vss", 0);
LOINS ("count5_latch", "count4", "c_cdtout", "en_cdtout", "rst", "sel_out[4:0]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/shift25.c
0,0 → 1,28
//Nama file : shift25.c
//Deskripsi : blok shift register 25 posisi ke kiri
//Author : Mas Adit
//Tanggal : 21 Agustus 2001
 
#include <genlib.h>
 
main ()
{
int i ;
DEF_LOFIG ("shift25");
 
LOCON ("in_key[127:0]", IN, "in_key[127:0]");
LOCON ("clr", IN, "clr");
LOCON ("en", IN, "en");
LOCON ("sel1", IN, "sel1");
LOCON ("sel2", IN, "sel2");
LOCON ("out_key[127:0]", OUT, "out_key[127:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("mux128", "mux1", "in_key[127:0]", "kunci_out[127:0]", "sel1", "kunci_in[127:0]", "vdd", "vss", 0);
LOINS ("shiftreg", "shiftreg1", "kunci_in[127:0]", "clr", "en", "kunci_out[127:0]", "vdd", "vss", 0);
LOINS ("mux128", "mux2", "in_key[127:0]", "kunci_out[127:0]", "sel2", "out_key[127:0]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/count2_latch.c
0,0 → 1,27
//Nama file : count2_latch.c
//Deskripsi : count2.vst + latch.vst
//Author : Mas Adit
//Tanggal : 31 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
DEF_LOFIG ("count2_latch");
LOCON ("clk", IN, "clk");
LOCON ("en", IN, "en");
LOCON ("rst", IN, "rst");
LOCON ("q[1:0]", OUT, "q[1:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("count2", "count1", "clk", "rst", "p[1:0]", "vd", "vss", 0);
for (i=0; i<2; i++)
{
LOINS ("latch", NAME("latch%d", i), NAME("p[%d]", i), "en", NAME("q[%d]", i), "vdd", "vss", 0);
}
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/count3_latch.c
0,0 → 1,27
//Nama file : count3_latch.c
//Deskripsi : count3.vst + latch.vst
//Author : Mas Adit
//Tanggal : 31 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
DEF_LOFIG ("count3_latch");
LOCON ("clk", IN, "clk");
LOCON ("en", IN, "en");
LOCON ("rst", IN, "rst");
LOCON ("q[2:0]", OUT, "q[2:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("count3", "count1", "clk", "rst", "p[2:0]", "vd", "vss", 0);
for (i=0; i<3; i++)
{
LOINS ("latch", NAME("latch%d", i), NAME("p[%d]", i), "en", NAME("q[%d]", i), "vdd", "vss", 0);
}
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/count4_latch.c
0,0 → 1,27
//Nama file : count4_latch.c
//Deskripsi : count4.vst + latch.vst
//Author : Mas Adit
//Tanggal : 31 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
DEF_LOFIG ("count4_latch");
LOCON ("clk", IN, "clk");
LOCON ("en", IN, "en");
LOCON ("rst", IN, "rst");
LOCON ("q[3:0]", OUT, "q[3:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("count4", "count1", "clk", "rst", "p[3:0]", "vd", "vss", 0);
for (i=0; i<4; i++)
{
LOINS ("latch", NAME("latch%d", i), NAME("p[%d]", i), "en", NAME("q[%d]", i), "vdd", "vss", 0);
}
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/adder17.c
0,0 → 1,30
//Nama file : adder17.c
//Deskripsi : blok adder 17 bit 2 input
//Author : Mas Adit
//Tanggal : 29 Agustus 2001
 
#include <genlib.h>
main()
{
int i;
 
DEF_LOFIG ("adder17");
 
LOCON ("a[16:0]", IN, "a[16:0]");
LOCON ("b[16:0]", IN, "b[16:0]");
LOCON ("res[17:0]", OUT, "res[17:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("zero_x0", "zero1", "nol", "vdd", "vss", 0);
LOINS ("adder01", "adder0", "a[0]", "b[0]", "nol", "res[0]", "cout[0]", "vdd", "vss", 0);
for (i=1; i<16; i++)
{
LOINS ("adder01", NAME("adder%d", i), NAME("a[%d]", i), NAME("b[%d]", i), NAME("cout[%d]", i - 1),
NAME("res[%d]", i), NAME("cout[%d]", i), "vdd", "vss", 0);
}
LOINS ("adder01", "adder16", "a[16]", "b[16]", "cout[15]", "res[16]", "res[17]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/key_select.c
0,0 → 1,165
//Nama file : key_select.c
//Deskripsi : blok pemilih kunci (decoder alamat kunci)
//Author : Mas Adit
//Tanggal : 23 Agustus 2001
 
#include <genlib.h>
 
main ()
{
int i;
DEF_LOFIG ("key_select");
 
LOCON ("e1[15:0]", IN, "e1[15:0]");
LOCON ("e2[15:0]", IN, "e2[15:0]");
LOCON ("e3[15:0]", IN, "e3[15:0]");
LOCON ("e4[15:0]", IN, "e4[15:0]");
LOCON ("e5[15:0]", IN, "e5[15:0]");
LOCON ("e6[15:0]", IN, "e6[15:0]");
LOCON ("e7[15:0]", IN, "e7[15:0]");
LOCON ("e8[15:0]", IN, "e8[15:0]");
LOCON ("e9[15:0]", IN, "e9[15:0]");
LOCON ("e10[15:0]", IN, "e10[15:0]");
LOCON ("e11[15:0]", IN, "e11[15:0]");
LOCON ("e12[15:0]", IN, "e12[15:0]");
LOCON ("e13[15:0]", IN, "e13[15:0]");
LOCON ("e14[15:0]", IN, "e14[15:0]");
LOCON ("e15[15:0]", IN, "e15[15:0]");
LOCON ("e16[15:0]", IN, "e16[15:0]");
LOCON ("e17[15:0]", IN, "e17[15:0]");
LOCON ("e18[15:0]", IN, "e18[15:0]");
LOCON ("e19[15:0]", IN, "e19[15:0]");
LOCON ("e20[15:0]", IN, "e20[15:0]");
LOCON ("e21[15:0]", IN, "e21[15:0]");
LOCON ("e22[15:0]", IN, "e22[15:0]");
LOCON ("e23[15:0]", IN, "e23[15:0]");
LOCON ("e24[15:0]", IN, "e24[15:0]");
LOCON ("e25[15:0]", IN, "e25[15:0]");
LOCON ("e26[15:0]", IN, "e26[15:0]");
LOCON ("e27[15:0]", IN, "e27[15:0]");
LOCON ("e28[15:0]", IN, "e28[15:0]");
LOCON ("e29[15:0]", IN, "e29[15:0]");
LOCON ("e30[15:0]", IN, "e30[15:0]");
LOCON ("e31[15:0]", IN, "e31[15:0]");
LOCON ("e32[15:0]", IN, "e32[15:0]");
LOCON ("e33[15:0]", IN, "e33[15:0]");
LOCON ("e34[15:0]", IN, "e34[15:0]");
LOCON ("e35[15:0]", IN, "e35[15:0]");
LOCON ("e36[15:0]", IN, "e36[15:0]");
LOCON ("e37[15:0]", IN, "e37[15:0]");
LOCON ("e38[15:0]", IN, "e38[15:0]");
LOCON ("e39[15:0]", IN, "e39[15:0]");
LOCON ("e40[15:0]", IN, "e40[15:0]");
LOCON ("e41[15:0]", IN, "e41[15:0]");
LOCON ("e42[15:0]", IN, "e42[15:0]");
LOCON ("e43[15:0]", IN, "e43[15:0]");
LOCON ("e44[15:0]", IN, "e44[15:0]");
LOCON ("e45[15:0]", IN, "e45[15:0]");
LOCON ("e46[15:0]", IN, "e46[15:0]");
LOCON ("e47[15:0]", IN, "e47[15:0]");
LOCON ("e48[15:0]", IN, "e48[15:0]");
LOCON ("e49[15:0]", IN, "e49[15:0]");
LOCON ("e50[15:0]", IN, "e50[15:0]");
LOCON ("e51[15:0]", IN, "e51[15:0]");
LOCON ("e52[15:0]", IN, "e52[15:0]");
LOCON ("d1[15:0]", IN, "d1[15:0]");
LOCON ("d2[15:0]", IN, "d2[15:0]");
LOCON ("d3[15:0]", IN, "d3[15:0]");
LOCON ("d4[15:0]", IN, "d4[15:0]");
LOCON ("d5[15:0]", IN, "d5[15:0]");
LOCON ("d6[15:0]", IN, "d6[15:0]");
LOCON ("d7[15:0]", IN, "d7[15:0]");
LOCON ("d8[15:0]", IN, "d8[15:0]");
LOCON ("d9[15:0]", IN, "d9[15:0]");
LOCON ("d10[15:0]", IN, "d10[15:0]");
LOCON ("d11[15:0]", IN, "d11[15:0]");
LOCON ("d12[15:0]", IN, "d12[15:0]");
LOCON ("d13[15:0]", IN, "d13[15:0]");
LOCON ("d14[15:0]", IN, "d14[15:0]");
LOCON ("d15[15:0]", IN, "d15[15:0]");
LOCON ("d16[15:0]", IN, "d16[15:0]");
LOCON ("d17[15:0]", IN, "d17[15:0]");
LOCON ("d18[15:0]", IN, "d18[15:0]");
LOCON ("d19[15:0]", IN, "d19[15:0]");
LOCON ("d20[15:0]", IN, "d20[15:0]");
LOCON ("d21[15:0]", IN, "d21[15:0]");
LOCON ("d22[15:0]", IN, "d22[15:0]");
LOCON ("d23[15:0]", IN, "d23[15:0]");
LOCON ("d24[15:0]", IN, "d24[15:0]");
LOCON ("d25[15:0]", IN, "d25[15:0]");
LOCON ("d26[15:0]", IN, "d26[15:0]");
LOCON ("d27[15:0]", IN, "d27[15:0]");
LOCON ("d28[15:0]", IN, "d28[15:0]");
LOCON ("d29[15:0]", IN, "d29[15:0]");
LOCON ("d30[15:0]", IN, "d30[15:0]");
LOCON ("d31[15:0]", IN, "d31[15:0]");
LOCON ("d32[15:0]", IN, "d32[15:0]");
LOCON ("d33[15:0]", IN, "d33[15:0]");
LOCON ("d34[15:0]", IN, "d34[15:0]");
LOCON ("d35[15:0]", IN, "d35[15:0]");
LOCON ("d36[15:0]", IN, "d36[15:0]");
LOCON ("d37[15:0]", IN, "d37[15:0]");
LOCON ("d38[15:0]", IN, "d38[15:0]");
LOCON ("d39[15:0]", IN, "d39[15:0]");
LOCON ("d40[15:0]", IN, "d40[15:0]");
LOCON ("d41[15:0]", IN, "d41[15:0]");
LOCON ("d42[15:0]", IN, "d42[15:0]");
LOCON ("d43[15:0]", IN, "d43[15:0]");
LOCON ("d44[15:0]", IN, "d44[15:0]");
LOCON ("d45[15:0]", IN, "d45[15:0]");
LOCON ("d46[15:0]", IN, "d46[15:0]");
LOCON ("d47[15:0]", IN, "d47[15:0]");
LOCON ("d48[15:0]", IN, "d48[15:0]");
LOCON ("d49[15:0]", IN, "d49[15:0]");
LOCON ("d50[15:0]", IN, "d50[15:0]");
LOCON ("d51[15:0]", IN, "d51[15:0]");
LOCON ("d52[15:0]", IN, "d52[15:0]");
LOCON ("E", IN, "E");
LOCON ("en", IN, "en");
LOCON ("clr", IN, "clr");
LOCON ("cke", IN, "cke");
LOCON ("round[2:0]", IN, "round[2:0]");
LOCON ("z1[15:0]", OUT, "z1[15:0]");
LOCON ("z2[15:0]", OUT, "z2[15:0]");
LOCON ("z3[15:0]", OUT, "z3[15:0]");
LOCON ("z4[15:0]", OUT, "z4[15:0]");
LOCON ("z5[15:0]", OUT, "z5[15:0]");
LOCON ("z6[15:0]", OUT, "z6[15:0]");
LOCON ("z91[15:0]", OUT, "z91[15:0]");
LOCON ("z92[15:0]", OUT, "z92[15:0]");
LOCON ("z93[15:0]", OUT, "z93[15:0]");
LOCON ("z94[15:0]", OUT, "z94[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("mux48to6", "mux_en_key", "e1[15:0]", "e2[15:0]", "e3[15:0]", "e4[15:0]", "e5[15:0]", "e6[15:0]", "e7[15:0]",
"e8[15:0]", "e9[15:0]", "e10[15:0]", "e11[15:0]", "e12[15:0]", "e13[15:0]", "e14[15:0]", "e15[15:0]",
"e16[15:0]", "e17[15:0]", "e18[15:0]", "e19[15:0]", "e20[15:0]", "e21[15:0]", "e22[15:0]", "e23[15:0]",
"e24[15:0]", "e25[15:0]", "e26[15:0]", "e27[15:0]", "e28[15:0]", "e29[15:0]", "e30[15:0]", "e31[15:0]",
"e32[15:0]", "e33[15:0]", "e34[15:0]", "e35[15:0]", "e36[15:0]", "e37[15:0]", "e38[15:0]", "e39[15:0]",
"e40[15:0]", "e41[15:0]", "e42[15:0]", "e43[15:0]", "e44[15:0]", "e45[15:0]", "e46[15:0]", "e47[15:0]",
"e48[15:0]", "round[2:0]", "oe1[15:0]", "oe2[15:0]", "oe3[15:0]", "oe4[15:0]", "oe5[15:0]", "oe6[15:0]",
"vdd", "vss", 0);
LOINS ("mux48to6", "mux_de_key", "d1[15:0]", "d2[15:0]", "d3[15:0]", "d4[15:0]", "d5[15:0]", "d6[15:0]", "d7[15:0]",
"d8[15:0]", "d9[15:0]", "d10[15:0]", "d11[15:0]", "d12[15:0]", "d13[15:0]", "d14[15:0]", "d15[15:0]",
"d16[15:0]", "d17[15:0]", "d18[15:0]", "d19[15:0]", "d20[15:0]", "d21[15:0]", "d22[15:0]", "d23[15:0]",
"d24[15:0]", "d25[15:0]", "d26[15:0]", "d27[15:0]", "d28[15:0]", "d29[15:0]", "d30[15:0]", "d31[15:0]",
"d32[15:0]", "d33[15:0]", "d34[15:0]", "d35[15:0]", "d36[15:0]", "d37[15:0]", "d38[15:0]", "d39[15:0]",
"d40[15:0]", "d41[15:0]", "d42[15:0]", "d43[15:0]", "d44[15:0]", "d45[15:0]", "d46[15:0]", "d47[15:0]",
"d48[15:0]", "round[2:0]", "od1[15:0]", "od2[15:0]", "od3[15:0]", "od4[15:0]", "od5[15:0]", "od6[15:0]",
"vdd", "vss", 0);
LOINS ("mux12to6_latch", "mux_E_D1", "oe1[15:0]", "oe2[15:0]", "oe3[15:0]", "oe4[15:0]", "oe5[15:0]", "oe6[15:0]",
"od1[15:0]", "od2[15:0]", "od3[15:0]", "od4[15:0]", "od5[15:0]", "od6[15:0]", "en", "clr", "E", "cke",
"z1[15:0]", "z2[15:0]", "z3[15:0]", "z4[15:0]", "z5[15:0]", "z6[15:0]", "vdd", "vss", 0);
LOINS ("mux8to4_latch", "mux_E_D2", "e49[15:0]", "e50[15:0]", "e51[15:0]", "e52[15:0]", "d49[15:0]", "d50[15:0]",
"d51[15:0]", "d52[15:0]", "en", "clr", "E", "cke", "z91[15:0]", "z92[15:0]", "z93[15:0]", "z94[15:0]","vdd",
"vss", 0);
 
SAVE_LOFIG();
exit(0);
}
 
 
 
 
 
/trunk/structural_c/key_regulator/count5_latch.c
0,0 → 1,27
//Nama file : count5_latch.c
//Deskripsi : count5.vst + latch.vst
//Author : Mas Adit
//Tanggal : 31 Agustus 2001
 
#include <genlib.h>
 
main()
{
int i;
DEF_LOFIG ("count5_latch");
LOCON ("clk", IN, "clk");
LOCON ("en", IN, "en");
LOCON ("rst", IN, "rst");
LOCON ("q[4:0]", OUT, "q[4:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("count5", "count1", "clk", "rst", "p[4:0]", "vd", "vss", 0);
for (i=0; i<5; i++)
{
LOINS ("latch", NAME("latch%d", i), NAME("p[%d]", i), "en", NAME("q[%d]", i), "vdd", "vss", 0);
}
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/latch.c
0,0 → 1,24
// File Name : latch.c
// Description : Latch in C
// Author : Sigit Dewantoro
// Date : March 27th, 2001
 
#include <genlib.h>
 
main()
{
DEF_LOFIG ("latch");
 
LOCON ("a", IN, "a");
LOCON ("en", IN, "en");
LOCON ("b", INOUT, "b");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("noa22_x1", "notorand1", "en", "a", "b", "q", "vdd", "vss", 0);
LOINS ("inv_x1", "inv1", "a", "nota", "vdd", "vss", 0);
LOINS ("noa22_x1", "notorand2", "en", "nota" , "q", "b", "vdd", "vss", 0);
 
SAVE_LOFIG();
exit(0);
}
/trunk/structural_c/key_regulator/invmuls.c
0,0 → 1,33
//Nama file : invmuls.c
//Deskripsi : invers multiplication modulo (2^16 + 1)
//Author : Mas Adit
//Tanggal : 26 Agustus 2001
 
#include <genlib.h>
 
main()
{
 
DEF_LOFIG ("invmuls");
 
LOCON ("zi[15:0]", IN, "zi[15:0]");
LOCON ("rst", IN, "rst");
LOCON ("en_pipe", IN, "en_pipe");
LOCON ("sel", IN, "sel");
LOCON ("cke", IN, "cke");
LOCON ("zo[15:0]", OUT, "zo[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("mux16", "mux_L", "zo[15:0]", "zi[15:0]", "sel", "o_mux_L[15:0]", "vdd", "vss", 0);
LOINS ("mux16", "mux_R", "ost3_R[15:0]", "zi[15:0]", "sel", "o_mux_R[15:0]", "vdd", "vss", 0);
LOINS ("reg16_latch", "reg1_L", "o_mux_L[15:0]", "en", "clr", "cke", "ost1_L[15:0]", "vdd", "vss", 0);
LOINS ("reg16_latch", "reg1_R", "o_mux_R[15:0]", "en", "clr", "cke", "ost1_R[15:0]", "vdd", "vss", 0);
LOINS ("reg16_latch", "reg2_L", "ost1_L[15:0]", "en", "clr", "cke", "ost2_L[15:0]", "vdd", "vss", 0);
LOINS ("mulmod", "mulmod_R", "ost1_R[15:0]", "ost1_R[15:0]", "en", "clr", "cke", "ost2_R[15:0]", "vdd", "vss", 0);
LOINS ("mulmod", "mulmod_L", "ost2_L[15:0]", "ost2_R[15:0]", "en", "clr", "cke", "zo[15:0]", "vdd", "vss", 0);
LOINS ("reg16_latch", "reg2_R", "ost2_R[15:0]", "en", "clr", "cke", "ost3_R[15:0]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
/trunk/structural_c/key_regulator/gen_inv_add.c
0,0 → 1,76
//Nama file : gen_inv_add.c
//Deskripsi : blok pembangkit invers penjumlahan modulo (2^16 + 1)
//Author : Mas Adit
//Tanggal : 28 Agustus 2001
 
#include<genlib.h>
 
main()
{
int i;
 
DEF_LOFIG ("gen_inv_add");
 
LOCON (" i1[15:0]", IN, "i1[15:0]");
LOCON (" i2[15:0]", IN, "i2[15:0]");
LOCON (" i3[15:0]", IN, "i3[15:0]");
LOCON (" i4[15:0]", IN, "i4[15:0]");
LOCON (" i5[15:0]", IN, "i5[15:0]");
LOCON (" i6[15:0]", IN, "i6[15:0]");
LOCON (" i7[15:0]", IN, "i7[15:0]");
LOCON (" i8[15:0]", IN, "i8[15:0]");
LOCON (" i9[15:0]", IN, "i9[15:0]");
LOCON (" i10[15:0]", IN, "i10[15:0]");
LOCON (" i11[15:0]", IN, "i11[15:0]");
LOCON (" i12[15:0]", IN, "i12[15:0]");
LOCON (" i13[15:0]", IN, "i13[15:0]");
LOCON (" i14[15:0]", IN, "i14[15:0]");
LOCON (" i15[15:0]", IN, "i15[15:0]");
LOCON (" i16[15:0]", IN, "i16[15:0]");
LOCON (" i17[15:0]", IN, "i17[15:0]");
LOCON (" i18[15:0]", IN, "i18[15:0]");
LOCON ("clk", IN, "clk");
LOCON ("rst", IN, "rst");
LOCON ("start", IN, "start");
LOCON (" o1[15:0]", OUT, "o1[15:0]");
LOCON (" o2[15:0]", OUT, "o2[15:0]");
LOCON (" o3[15:0]", OUT, "o3[15:0]");
LOCON (" o4[15:0]", OUT, "o4[15:0]");
LOCON (" o5[15:0]", OUT, "o5[15:0]");
LOCON (" o6[15:0]", OUT, "o6[15:0]");
LOCON (" o7[15:0]", OUT, "o7[15:0]");
LOCON (" o8[15:0]", OUT, "o8[15:0]");
LOCON (" o9[15:0]", OUT, "o9[15:0]");
LOCON (" o10[15:0]", OUT, "o10[15:0]");
LOCON (" o11[15:0]", OUT, "o11[15:0]");
LOCON (" o12[15:0]", OUT, "o12[15:0]");
LOCON (" o13[15:0]", OUT, "o13[15:0]");
LOCON (" o14[15:0]", OUT, "o14[15:0]");
LOCON (" o15[15:0]", OUT, "o15[15:0]");
LOCON (" o16[15:0]", OUT, "o16[15:0]");
LOCON (" o17[15:0]", OUT, "o17[15:0]");
LOCON (" o18[15:0]", OUT, "o18[15:0]");
LOCON ("finish", OUT, "finish");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("mux288to16_latch", "mux1", "i1[15:0]", "i2[15:0]", "i3[15:0]", "i4[15:0]", "i5[15:0]", "i6[15:0]",
"i7[15:0]", "i8[15:0]", "i9[15:0]", "i10[15:0]", "i11[15:0]", "i12[15:0]", "i13[15:0]", "i14[15:0]", "i15[15:0]",
"i16[15:0]", "i17[15:0]", "i18[15:0]", "en_in", "rst", "sel_in[4:0]", "start", "zi[15:0]", "vdd", "vss", 0);
LOINS ("zero16", "zero1", "nol[15:0]", "vdd", "vss", 0);
LOINS ("fullsubstractor16", "fullsubstractor1", "nol[15:0]", "zi[15:0]", "zo[15:0]", "vdd", "vss", 0);
LOINS ("dec16to288_latch", "dec1", "zo[15:0]", "en_out", "rst", "sel_out[4:0]", "start", "o1[15:0]", "o2[15:0]",
"o3[15:0]", "o4[15:0]", "o5[15:0]", "o6[15:0]", "o7[15:0]", "o8[15:0]", "o9[15:0]", "o10[15:0]", "o11[15:0]",
"o12[15:0]", "o13[15:0]", "o14[15:0]", "o15[15:0]", "o16[15:0]", "o17[15:0]", "o18[15:0]", "vdd", "vss", 0);
LOINS ("kontrol_invadd", "kontrol_invadd1", "start", "clk", "rst","sel_in[4:0]", "sel_out[4:0]", "en_in", "en_out",
"finish", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}
 
 
 
 
 
 
/trunk/structural_c/key_regulator/mulmod.c
0,0 → 1,31
//Nama file : mulmod.c
//Deskripsi : blok multiplier modulo (2^16 + 1)
//Author : Mas Adit
//Tanggal : 29 Agustus 2001
 
#include <genlib.h>
 
main()
{
DEF_LOFIG ("mulmod");
LOCON ("in1[15:0]", IN, "in1[15:0]");
LOCON ("in2[15:0]", IN, "in2[15:0]");
LOCON ("en", IN, "en");
LOCON ("rst", IN, "rst");
LOCON ("cke", IN, "cke");
LOCON ("mulout[15:0]", OUT, "mulout[15:0]");
LOCON ("vdd", IN, "vdd");
LOCON ("vss", IN, "vss");
 
LOINS ("comparator", "comparator1", "in1[15:0]", "kout1[16:0]", "vdd", "vss", 0);
LOINS ("comparator", "comparator2", "in2[15:0]", "kout2[16:0]", "vdd", "vss", 0);
LOINS ("multiplier17", "mul17", "kout1[16:0]", "kout2[16:0]", "has[33:0]", "vdd", "vss", 0);
LOINS ("comparator2", "comparator3", "has[15:0]", "has[31:16]", "kout3[15:0]", "vdd", "vss", 0);
LOINS ("fullsubstractor16", "fullsubstractor1", "has[15:0]", "has[31:16]", "diff[15:0]", "vdd", "vss", 0);
LOINS ("reg16_latch", "reg1", "kout3[15:0]", "en", "rst", "cke", "b1[15:0]", "vdd", "vss", 0);
LOINS ("reg16_latch", "reg2", "diff[15:0]", "en", "rst", "cke", "b2[15:0]", "vdd", "vss", 0);
LOINS ("fulladder16", "fulladder1", "b1[15:0]", "b2[15:0]", "mulout[15:0]", "vdd", "vss", 0);
 
SAVE_LOFIG ();
exit (0);
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.