⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 library.c

📁 主要用于大规模的测试生成方法
💻 C
字号:
/*	library.c	Descrizione della libreria utilizzata dalla create()	Massimo Violante, 1995*/#include <malloc.h>#include <string.h>#include <stdio.h>#include "library.h"int	n_comp = 32;LIB_TYPE	*library;char	*pin_name[5];char	*pin_name_ffd[2];char	*pin_name_ffr[3];char	*pin_name_ffp[3];char	*pin_name_ffrp[4];void	init_library( void ){	int	i;	library = (LIB_TYPE *)malloc( sizeof(LIB_TYPE)*n_comp );	if( library == NULL )	{		printf( "(init_library) Memory error, quitting...\n" );		exit( 1 );	}	pin_name[0] = strdup( "I1" );	pin_name[1] = strdup( "I2" );	pin_name[2] = strdup( "I3" );	pin_name[3] = strdup( "I4" );	pin_name[4] = strdup( "I5" );	pin_name_ffd[0] = strdup( "D" );	pin_name_ffd[1] = strdup( "CK" );	pin_name_ffr[0] = strdup( "D" );	pin_name_ffr[1] = strdup( "CK" );	pin_name_ffr[2] = strdup( "RESET" );	pin_name_ffp[0] = strdup( "D" );	pin_name_ffp[1] = strdup( "CK" );	pin_name_ffp[2] = strdup( "PRESET" );	pin_name_ffrp[0] = strdup( "D" );	pin_name_ffrp[1] = strdup( "CK" );	pin_name_ffrp[2] = strdup( "RESET" );	pin_name_ffrp[3] = strdup( "PRESET" );	library[0].name = strdup( "AND_GATE" ); 	library[0].n_fanin = 2;	library[0].fanin_list = pin_name;	library[1].name = strdup( "NAND_GATE" ); 	library[1].n_fanin = 2;	library[1].fanin_list = pin_name;	library[2].name = strdup( "OR_GATE" ); 	library[2].n_fanin = 2;	library[2].fanin_list = pin_name;	library[3].name = strdup( "INV_GATE" ); 	library[3].n_fanin = 1;	library[3].fanin_list = pin_name;	library[4].name = strdup( "BUF_GATE" ); 	library[4].n_fanin = 1;	library[4].fanin_list = pin_name;	library[5].name = strdup( "NOR_GATE" ); 	library[5].n_fanin = 2;	library[5].fanin_list = pin_name;	library[6].name = strdup( "XOR_GATE" ); 	library[6].n_fanin = 2;	library[6].fanin_list = pin_name;	library[7].name = strdup( "XNOR_GATE" ); 	library[7].n_fanin = 2;	library[7].fanin_list = pin_name;	library[8].name = strdup( "XOR3_GATE" ); 	library[8].n_fanin = 3;	library[8].fanin_list = pin_name;	library[9].name = strdup( "XNOR3_GATE" ); 	library[9].n_fanin = 3;	library[9].fanin_list = pin_name;	library[10].name = strdup( "XOR4_GATE" ); 	library[10].n_fanin = 4;	library[10].fanin_list = pin_name;	library[11].name = strdup( "XNOR4_GATE" ); 	library[11].n_fanin = 4;	library[11].fanin_list = pin_name;	library[12].name = strdup( "XOR5_GATE" ); 	library[12].n_fanin = 5;	library[12].fanin_list = pin_name;	library[13].name = strdup( "XNOR5_GATE" ); 	library[13].n_fanin = 5;	library[13].fanin_list = pin_name;	library[14].name = strdup( "NAND3_GATE" ); 	library[14].n_fanin = 3;	library[14].fanin_list = pin_name;	library[15].name = strdup( "AND3_GATE" ); 	library[15].n_fanin = 3;	library[15].fanin_list = pin_name;	library[16].name = strdup( "OR3_GATE" ); 	library[16].n_fanin = 3;	library[16].fanin_list = pin_name;	library[17].name = strdup( "NOR3_GATE" ); 	library[17].n_fanin = 3;	library[17].fanin_list = pin_name;	library[18].name = strdup( "NAND4_GATE" ); 	library[18].n_fanin = 4;	library[18].fanin_list = pin_name;	library[19].name = strdup( "AND4_GATE" ); 	library[19].n_fanin = 4;	library[19].fanin_list = pin_name;	library[20].name = strdup( "OR4_GATE" ); 	library[20].n_fanin = 4;	library[20].fanin_list = pin_name;	library[21].name = strdup( "NOR4_GATE" ); 	library[21].n_fanin = 4;	library[21].fanin_list = pin_name;	library[22].name = strdup( "NAND5_GATE" ); 	library[22].n_fanin = 5;	library[22].fanin_list = pin_name;	library[23].name = strdup( "AND5_GATE" ); 	library[23].n_fanin = 5;	library[23].fanin_list = pin_name;	library[24].name = strdup( "OR5_GATE" ); 	library[24].n_fanin = 5;	library[24].fanin_list = pin_name;	library[25].name = strdup( "NOR5_GATE" ); 	library[25].n_fanin = 5;	library[25].fanin_list = pin_name;	library[26].name = strdup( "FLIP_FLOP_D" ); 	library[26].n_fanin = 2;	library[26].fanin_list = pin_name_ffd;	library[27].name = strdup( "FLIP_FLOP_D_RESET" ); 	library[27].n_fanin = 3;	library[27].fanin_list = pin_name_ffr;	library[28].name = strdup( "FLIP_FLOP_D_PRESET" ); 	library[28].n_fanin = 3;	library[28].fanin_list = pin_name_ffp;	library[29].name = strdup( "FLIP_FLOP_D_RESET_PRESET" ); 	library[29].n_fanin = 4;	library[29].fanin_list = pin_name_ffrp;	library[30].name = strdup( "LOGIC_0" ); 	library[30].n_fanin = 0;	library[30].fanin_list = pin_name;	library[31].name = strdup( "LOGIC_1" ); 	library[31].n_fanin = 0;	library[31].fanin_list = pin_name;	for( i = 0; i < 26; i++ )		library[i].fanout = strdup( "O" );		/* le uscite dei gate si chiamano tutte O */	for( /*NOP*/; i < 30; i++ )		library[i].fanout = strdup( "Q" );		/* le uscite dei FF si chiamano tutte Q */	library[30].fanout = strdup( "O" );	library[31].fanout = strdup( "O" );}int	get_pin_pos( char *s ){	int	i;	for( i = 0; i < 5; i++ )		if( strcmp( s, pin_name[i] ) == 0 )			return( i );	for( i = 0; i < 2; i++ )		if( strcmp( s, pin_name_ffd[i] ) == 0 )			return( i );	for( i = 0; i < 3; i++ )		if( strcmp( s, pin_name_ffr[i] ) == 0 )			return( i );	for( i = 0; i < 3; i++ )		if( strcmp( s, pin_name_ffp[i] ) == 0 )			return( i );			for( i = 0; i < 4; i++ )		if( strcmp( s, pin_name_ffrp[i] ) == 0 )			return( i );	return( -1 );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -