Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

[help!] Error while compiling in modelsim

Status
Not open for further replies.

jianhuachews

Member level 2
Joined
Jun 7, 2011
Messages
50
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,662
Hi guys.. I was writing a testbench but errors occurred when i compiled it. could anyone tell me wht's wrong? I know it might look pretty obvious but i just don't see it.

The errors while compiling the test bench goes
Signal "altb_i" is type std_logic; expecting type std_logic_vector.
Signal "agtb_i" is type std_logic; expecting type std_logic_vector.
Signal "a" is type std_logic_vector; expecting type std_logic.
Signal "b" is type std_logic_vector; expecting type std_logic.


TB code
Code:
Library IEEE;
Use IEEE.std_logic_1164.all;

Entity lab4bTB is
end;

Architecture comparator of lab4bTB is
	signal altb_i, agtb_i: std_logic:='0';
	signal aeqb_i: std_logic:='1';
	signal a,b: std_logic_vector(3 downto 0):="0000";
	signal agtb_o,agtb_out, aeqb_o,aeqb_out, altb_o, altb_out :  std_logic;

begin
UUT : entity work.lab4b port map(altb_i, agtb_i, aeqb_i, a, b, altb_out, agtb_out, aeqb_out);


tb : process
	begin
		wait for 50 ns;
		aeqb_i <= '1'; a<="1110"; 
		wait for 50 ns;
		aeqb_i <= '1'; b<="1111";
		wait for 50 ns;
		aeqb_i<='0'; agtb_i <='1';
		wait for 50 ns;
		a<="1010"; b<="1111";
		wait for 50 ns;
		agtb_i <='0'; altb_i<='1';
		wait for 50 ns;
		a<="1111"; b<="1010";
		
	end process tb;
	
	aeqb_o<=aeqb_out;
	agtb_o<=agtb_out;
	altb_o<=altb_out;
end;

program code
Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity lab4b is port (
		a,b: in std_logic_vector(3 downto 0):="0000";
		altb_i: in std_logic:='0';
		aeqb_i: in std_logic:='1';
		agtb_i: in std_logic:='0';
		aeqb_o, agtb_o, altb_o: out std_logic
);

end;

architecture comparator of lab4b is

begin

	process (agtb_i, aeqb_i, altb_i, a, b)
	 begin
		if (aeqb_i='1') then
		 if (a=b) then
			aeqb_o <= '1';
			agtb_o <= '0';
			altb_o <= '0';
		 elsif (a>b) then
		 	agtb_o <='1';
			aeqb_o <='0';
			altb_o <='0';
		 elsif (a<b) then
		 	agtb_o <='0';
			aeqb_o <='0';
			altb_o <='1';
		elsif (agtb_i='1' or (altb_i='1' and a > b)) then
			agtb_o <='1';
			aeqb_o <='0';
			altb_o <='0';
		elsif (altb_i='1' or (agtb_i='1' and a < b)) then
			agtb_o <='0';
			aeqb_o <='0';
			altb_o <='1';
		else 
			aeqb_o<='0';
			agtb_o<='0';
			altb_o<='0';
		 end if;
		end if;
	end process;

end;

Thanks in adv!
 

vipinlal

Full Member level 6
Joined
Mar 8, 2010
Messages
358
Helped
76
Reputation
152
Reaction score
60
Trophy points
1,308
Location
India
Activity points
3,187
The signals inside the entity instantiation was not in the correct order. Replace it with the below line:

UUT : entity work.lab4b port map(a,b,altb_i, aeqb_i, agtb_i,aeqb_out, agtb_out,altb_out);
 

jianhuachews

Member level 2
Joined
Jun 7, 2011
Messages
50
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,662
The signals inside the entity instantiation was not in the correct order. Replace it with the below line:

UUT : entity work.lab4b port map(a,b,altb_i, aeqb_i, agtb_i,aeqb_out, agtb_out,altb_out);
Hi vipinlal, thanks for helping out! I didn't know that the order actually affect the compilation.. It's actually working right now. Can you tell me more about it?
 

sanju_

Full Member level 3
Joined
Mar 31, 2011
Messages
152
Helped
35
Reputation
70
Reaction score
33
Trophy points
1,318
Location
BANGALORE
Activity points
2,009
hi
in your testbench line
UUT : entity work.lab4b port map(altb_i, agtb_i, aeqb_i, a, b, altb_out, agtb_out, aeqb_out);
it should be order with
entity lab4b is port (
a,b: in std_logic_vector(3 downto 0):="0000";
altb_i: in std_logic:='0';
aeqb_i: in std_logic:='1';
agtb_i: in std_logic:='0';
aeqb_o, agtb_o, altb_o: out std_logic
);

end;
 

jianhuachews

Member level 2
Joined
Jun 7, 2011
Messages
50
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,662
Thanks guys! I've gotten the waveforms i wanted but i was told that my vhdl code design is wrong and that it should be in hierarchy design. I don't get it. What's with hierarchy design coding and mine? And how should i go about implementing hierarchy design in my program?
 

jianhuachews

Member level 2
Joined
Jun 7, 2011
Messages
50
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,662
I have been reading for hours and i still don't get it..........
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top