亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? up_hdl_parser.pm

?? 基于Avalon的SDRAM控制器IP核
?? PM
字號:
# +----------------------------------------------------------------------------+
# | Copyright (C)2001-2006 Altera Corporation                                  |
# |  Any megafunction design, and related net list (encrypted or decrypted),   |
# |  support information, device programming or simulation file, and any other |
# |  associated documentation or information provided by Altera or a partner   |
# |  under Altera's Megafunction Partnership Program may be used only to       |
# |  program PLD devices (but not masked PLD devices) from Altera.  Any other  |
# |  use of such megafunction design, net list, support information, device    |
# |  programming or simulation file, or any other related documentation or     |
# |  information is prohibited for any other purpose, including, but not       |
# |  limited to modification, reverse engineering, de-compiling, or use with   |
# |  any other silicon devices, unless such use is explicitly licensed under   |
# |  a separate agreement with Altera or a megafunction partner.  Title to     |
# |  the intellectual property, including patents, copyrights, trademarks,     |
# |  trade secrets, or maskworks, embodied in any such megafunction design,    |
# |  net list, support information, device programming or simulation file, or  |
# |  any other related documentation or information provided by Altera or a    |
# |  megafunction partner, remains with Altera, the megafunction partner, or   |
# |  their respective licensors.  No other licenses, including any licenses    |
# |  needed under any third party's intellectual property, are provided herein.|
# |  Copying or modifying any file, or portion thereof, to which this notice   |
# |  is attached violates this copyright.                                      |
# +----------------------------------------------------------------------------+




# +----------------------------------------------------------------------------+
# | file: UP_HDL_Parser.pl                                                     |
# |                                                                            |
# | This SOPC Builder Generator program is provided by                         |
# | Altera's University Program.                                               |
# |                                                                            |
# | Its purpose is to construct the HDL files for                              |
# | a particular instance of a particular University                           |
# | Program SOPC Builder peripheral.                                           |
# |                                                                            |
# | version: 0.3                                                               |
# |                                                                            |
# +----------------------------------------------------------------------------+

package UP_HDL_Parser;
use Exporter;


@ISA = Exporter;
@EXPORT = qw(
	parse_hdl_file
);

use strict;
use UP_System_Info;
use UP_PTF_Parser;

sub parse_hdl_file
{
	my ($filename, $top_level_file) = (@_);

	my $error;
	my $module_name;
	my @hdl_file;

	$module_name = $filename;
	$module_name =~ s/hdl\///;
	$module_name =~ s/\.v//;

	($error, @hdl_file) = load_hdl_file($filename);
	return $error if ($error != 1);

	($error, @hdl_file) = modify_the_parameters(@hdl_file);
	return $error if ($error != 1);

	($error, @hdl_file) = parse_preprocessor_directives($module_name, @hdl_file);
	return $error if ($error != 1);

	if ($top_level_file == 1)
	{
		$module_name = get_ip_core_target_name();
		($error, @hdl_file) = change_module_name($module_name, @hdl_file);
		return $error if ($error != 1);
	}

	return 1, $module_name, @hdl_file;
}

sub load_hdl_file
{
	my ($info) = (@_);

	my $filename = get_ip_core_directory()."/".$info;

	generator_print_verbose ("Loading Module File: ".$info.", with fullpath name: ".$filename);

	my $text;

	my $line_count;
	my @hdl_file;

	open (FILE, $filename) or return "Unable to find the module: ".$info;
	while(<FILE>)
	{
		$line_count = push @hdl_file, $_;		
	}
	close (FILE);

	generator_print_verbose ("Module File ".$info." was loaded and contains ".$line_count." lines of code.");

	return (1, @hdl_file);
}

sub modify_the_parameters
{
	my (@hdl_file) = (@_);
	my @new_hdl_file;
	my $error;

	my $line_count = $#hdl_file + 1;

	for (my $i = 0; $i < $line_count; $i++)
	{
		my ($line) = $hdl_file[$i];
		if ($line =~ /^\s*parameter\s*/)
		{	 
			my $the_start = $&;
			my $the_rest = $';

			my $comment = ";\n";
			if ($the_rest =~ /;\s*\/\//)
			{
				$comment = $&.$';
				$the_rest = $`;
			}

			$the_rest =~ /\s*=\s*/;
			my $the_param		= $`;
			my $the_equal_sign	= $&;
			my $bit_width_info	= $';

			if ($bit_width_info =~ /\'./)
			{
				$bit_width_info = $`.$&;
			}
			else
			{
				$bit_width_info = "";
			}

			my $new_value;
			($error, $new_value) = check_parameter_from_ptf_file($the_param);
			if ($error != 1)
			{
				push @new_hdl_file, $line;
			}
			else
			{
				push @new_hdl_file, ($the_start.$the_param.$the_equal_sign.$bit_width_info.$new_value.$comment);
			}
		}
		else
		{
			push @new_hdl_file, $line;
		}
	}

	return 1, @new_hdl_file;
}

# Does not handle nested IF directives
sub parse_preprocessor_directives
{
	my ($moduleName, @hdl_file) = (@_);

	generator_print_verbose ("Parsing preprocessor directives for the module: ".$moduleName);

	my $line;
	my $line_number = 0;
	my @new_hdl_file;

	my $in_directive = 0;
	my $valid_directive = 0;
	my $has_valid_directive = 0;

	foreach $line (@hdl_file)
	{
		if ($line =~ /^`.+/)
		{
			if ($line =~ /^`IF\s+/)
			{
				chop (my $section_name = $');
				if ($in_directive == 1)
				{
					return "Preprocessor directive parse error: found nested `IF directives at line number: ".$line_number;
				}
				else
				{
					$in_directive = 1;
					if ($section_name eq "1")
					{
						$valid_directive = 1;
					}
					elsif ($section_name eq "0")
					{
						$valid_directive = 0;
					}
					else
					{
						my ($error, $value) = check_section_from_ptf_file($section_name);
						if (($error == 1) && ($value == 1))
						{
							$valid_directive = 1;
						}
						else
						{
							$valid_directive = 0;
						}
					}
					$has_valid_directive = $valid_directive;
				}
			}
			elsif ($line =~ /^`ELSIF\s+/)
			{
				chop (my $section_name = $');
				if ($in_directive == 0)
				{
					return "Preprocessor directive parse error: found `ELSIF before `IF at line number: ".$line_number;
				}
				elsif ($has_valid_directive == 1)
				{
					$valid_directive = 0;
				}
				else
				{
					if ($section_name eq "1")
					{
						$valid_directive = 1;
					}
					elsif ($section_name eq "0")
					{
						$valid_directive = 0;
					}
					else
					{
						my ($error, $value) = check_section_from_ptf_file($section_name);
						if (($error == 1) && ($value == 1))
						{
							$valid_directive = 1;
						}
						else
						{
							$valid_directive = 0;
						}
					}
					$has_valid_directive = $valid_directive;
				}
			}
			elsif ($line =~ /^`ELSE/)
			{
				if ($in_directive == 0)
				{
					return "Preprocessor directive parse error: found `ELSE before `IF at line number: ".$line_number;
				}
				elsif ($has_valid_directive == 1)
				{
					$valid_directive = 0;
				}
				else
				{
					$valid_directive = 1;
				}
				$has_valid_directive = 1;
			}
			elsif ($line =~ /^`ENDIF/)
			{
				if ($in_directive == 0)
				{
					return "Preprocessor directive parse error: found `ENDIF before `IF at line number: ".$line_number;
				}
				else
				{
					$in_directive = 0;
					$valid_directive = 0;
					$has_valid_directive = 0;
				}
			}
			else
			{
				return "Preprocessor directive parse error: found unknown directive ".$&." at line number: ".$line_number;
			}
		}
		elsif (($in_directive == 0) || ($valid_directive == 1))
		{
			push @new_hdl_file, $line;
		}

		$line_number++;
	}

	return (1, @new_hdl_file);
}

sub change_module_name
{
	my $new_module_name;
	my @hdl_file;
	($new_module_name, @hdl_file) = (@_);

	my $line;
	my @new_hdl_file;
	foreach $line (@hdl_file)
	{
		if ($line =~ /^module/)
		{
			push @new_hdl_file, "module ".$new_module_name." (\n";		
		}
		else
		{
			push @new_hdl_file, $line;
		}
	}

	return 1, @new_hdl_file;
}

# End with success

return 1;

# end of file

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久综合九色合综国产精品| 欧美精品 日韩| 国产调教视频一区| 成人一区二区三区在线观看| 国产日韩一级二级三级| 国产成a人无v码亚洲福利| 中文字幕不卡三区| 99久久99久久精品免费看蜜桃| 综合久久久久综合| 欧美高清视频一二三区 | 久久综合狠狠综合久久激情| 国产一区二区三区在线观看免费视频| 亚洲精品在线三区| av成人免费在线观看| 亚洲成a人在线观看| 日韩精品中文字幕一区二区三区 | 在线不卡免费欧美| 精品一区二区在线免费观看| 中文字幕中文乱码欧美一区二区| 欧美天天综合网| 久久疯狂做爰流白浆xx| 国产精品福利av| 在线观看91精品国产入口| 麻豆成人在线观看| 亚洲色图欧洲色图| 91精品国产综合久久久久久 | 日韩亚洲欧美在线| 成人av在线影院| 日韩av在线发布| 一区在线中文字幕| 日韩片之四级片| 91老司机福利 在线| 青青草97国产精品免费观看无弹窗版| 国产精品视频麻豆| 日韩一区二区三区免费观看| 北条麻妃一区二区三区| 日本v片在线高清不卡在线观看| 久久久91精品国产一区二区精品 | xf在线a精品一区二区视频网站| 一本色道久久综合亚洲aⅴ蜜桃| 看国产成人h片视频| 亚洲免费在线观看视频| 久久综合丝袜日本网| 欧美高清性hdvideosex| 色综合中文字幕| 国产ts人妖一区二区| 久久精品99国产国产精| 性做久久久久久久免费看| 国产精品乱码妇女bbbb| 精品国产3级a| 欧美另类z0zxhd电影| 成人污污视频在线观看| 国产综合久久久久久鬼色| 天天操天天色综合| 亚洲综合在线免费观看| 国产精品久久久久久久久久免费看 | 国产高清在线精品| 日韩国产一二三区| 午夜精品一区二区三区三上悠亚| 亚洲欧洲精品天堂一级| 国产精品嫩草久久久久| 日韩视频一区二区三区| 欧美男人的天堂一二区| 欧美亚洲高清一区二区三区不卡| 成人av一区二区三区| 国产高清亚洲一区| 国产激情精品久久久第一区二区 | 国产精品乱子久久久久| 国产日本欧美一区二区| 久久奇米777| 精品国产乱码久久久久久久| 欧美videofree性高清杂交| 欧美一区午夜精品| 日韩午夜三级在线| 精品久久久久久久人人人人传媒 | 欧美亚日韩国产aⅴ精品中极品| 色婷婷狠狠综合| 在线视频亚洲一区| 在线亚洲欧美专区二区| 91福利视频久久久久| 欧美伊人久久久久久久久影院 | 99re成人精品视频| 99国产精品99久久久久久| 99久久免费国产| 日本精品裸体写真集在线观看| 一本大道综合伊人精品热热| 欧美怡红院视频| 欧美女孩性生活视频| 日韩三级.com| 中文字幕乱码亚洲精品一区| 国产精品的网站| 亚洲国产中文字幕| 日本网站在线观看一区二区三区| 午夜精品福利一区二区蜜股av | 久久久久久久久久电影| 国产精品萝li| 亚洲成人高清在线| 蜜臀av国产精品久久久久 | 老司机精品视频线观看86| 国产剧情一区二区三区| 成人av在线播放网址| 欧美三级视频在线| 日韩欧美三级在线| 国产农村妇女精品| 亚洲专区一二三| 精品一区二区三区在线播放视频| 成人少妇影院yyyy| 欧美性感一类影片在线播放| 欧美不卡一区二区| 亚洲女同女同女同女同女同69| 午夜电影久久久| 国产成人在线观看免费网站| 91视频在线看| 日韩视频一区二区三区| 18涩涩午夜精品.www| 青娱乐精品在线视频| 成人高清视频在线| 91精品国产综合久久精品性色| 国产亚洲va综合人人澡精品| 亚洲综合图片区| 国产 欧美在线| 欧美日韩成人在线一区| 中文久久乱码一区二区| 日本v片在线高清不卡在线观看| 国产69精品久久久久毛片| 欧美电影影音先锋| 国产精品不卡在线| 精品一区二区三区影院在线午夜| 91啪亚洲精品| 国产亚洲一本大道中文在线| 亚洲成人免费看| 成人激情动漫在线观看| 精品伦理精品一区| 亚洲猫色日本管| 国产美女在线精品| 欧美一区二区三区不卡| 亚洲激情av在线| www.亚洲在线| 国产日韩欧美激情| 免费一级欧美片在线观看| 91黄色激情网站| 中文字幕第一区综合| 黄色小说综合网站| 欧美一区二区在线视频| 亚洲午夜激情av| 色中色一区二区| 中文字幕五月欧美| 国产91富婆露脸刺激对白| 精品欧美一区二区久久| 五月天激情小说综合| 欧美日韩中文一区| 亚洲日本丝袜连裤袜办公室| 国产在线精品免费av| 91精品久久久久久久91蜜桃| 亚洲综合丝袜美腿| 日本精品一级二级| 一区二区日韩av| 在线中文字幕一区| 亚洲免费电影在线| 91女神在线视频| 中文字幕一区二区三区视频 | 99久久99久久精品免费观看| 欧美激情中文字幕| 成人激情免费视频| 国产精品久久久久天堂| 成人精品国产福利| 国产精品免费视频观看| 成人免费黄色大片| 中文字幕第一区第二区| va亚洲va日韩不卡在线观看| 国产精品久久久久久久久久免费看| 成人av资源下载| 亚洲精品一卡二卡| 欧美午夜精品电影| 午夜a成v人精品| 日韩欧美中文一区| 国产一区二区三区| 国产色产综合产在线视频| 国产suv精品一区二区三区| 亚洲国产精品av| 一本久久综合亚洲鲁鲁五月天| 自拍偷拍欧美激情| 欧美怡红院视频| 久久精品国产久精国产爱| 亚洲精品在线网站| 99精品在线观看视频| 亚洲高清中文字幕| 精品国产一区二区亚洲人成毛片| 国内精品写真在线观看| 日本一二三不卡| 欧美在线观看视频一区二区| 日日夜夜免费精品视频| 久久嫩草精品久久久精品| 99久久久国产精品| 天堂久久久久va久久久久| 精品国产一区二区三区四区四| 成a人片亚洲日本久久| 亚洲成a人v欧美综合天堂下载| 精品国产乱码久久久久久免费| 成人美女在线观看|