Line 178... |
Line 178... |
|
|
|
|
it 'should iterate over all ports' do
|
it 'should iterate over all ports' do
|
|
|
SOCMaker::lib.clear
|
SOCMaker::lib.clear
|
ifc_s1 = SOCMaker::IfcSpc.new( "i1", "v1", 'ports' => { p1: 1, p2: 1, p3: 0 } )
|
ifc_s1 = SOCMaker::IfcSpc.new( "i1", "v1", 'ports' => { p1:{dir:1}, p2:{dir:1}, p3:{dir:0} } )
|
ifc_s2 = SOCMaker::IfcSpc.new( "i2", "v1", 'ports' => { x1: 1, x2: 0 } )
|
ifc_s2 = SOCMaker::IfcSpc.new( "i2", "v1", 'ports' => { x1:{dir:1}, x2:{dir:0} } )
|
SOCMaker::lib.add_ifc( ifc_s1 )
|
SOCMaker::lib.add_ifc( ifc_s1 )
|
SOCMaker::lib.add_ifc( ifc_s2 )
|
SOCMaker::lib.add_ifc( ifc_s2 )
|
|
|
p1 = SOCMaker::IfcPort.new( "p1", 1 )
|
p1 = SOCMaker::IfcPort.new( "p1", 1 )
|
p2 = SOCMaker::IfcPort.new( "p2", 2 )
|
p2 = SOCMaker::IfcPort.new( "p2", 2 )
|
Line 201... |
Line 201... |
r_name = []
|
r_name = []
|
r_dir = []
|
r_dir = []
|
r_len = []
|
r_len = []
|
r_is_last = []
|
r_is_last = []
|
|
|
c.ports do |arg_name,arg_dir,arg_len,arg_is_last|
|
c.ports do |arg_name,arg_dir,arg_len,arg_default,arg_is_last|
|
r_name << arg_name
|
r_name << arg_name
|
r_dir << arg_dir
|
r_dir << arg_dir
|
r_len << arg_len
|
r_len << arg_len
|
r_is_last << arg_is_last
|
r_is_last << arg_is_last
|
end
|
end
|
Line 213... |
Line 213... |
r_dir.sort.should be == [ 1, 1, 0, 1, 0 ].sort
|
r_dir.sort.should be == [ 1, 1, 0, 1, 0 ].sort
|
r_len.sort.should be == [ 1, 2, 3, 1, 2 ].sort
|
r_len.sort.should be == [ 1, 2, 3, 1, 2 ].sort
|
r_is_last.should be == [ false, false, false, false, true ]
|
r_is_last.should be == [ false, false, false, false, true ]
|
|
|
|
|
r_def = []
|
#r_def = []
|
r_name = []
|
r_name = []
|
r_dir = []
|
r_dir = []
|
|
|
c.ports( "i1" ) do |arg_name,arg_def,arg_dir|
|
c.ports( "i1" ) do |arg_name,arg_dir, arg_default, arg_is_last|
|
r_def << arg_def
|
#r_def << arg_def
|
r_name << arg_name
|
r_name << arg_name
|
r_dir << arg_dir
|
r_dir << arg_dir
|
end
|
end
|
r_def.should be == %w[ m_p1 m_p2 m_p3 ]
|
#r_def.should be == %w[ m_p1 m_p2 m_p3 ]
|
r_name.should be == %w[ p1 p2 p3 ]
|
r_name.should be == %w[ m_p1 m_p2 m_p3 ]
|
r_dir.should be == [ 1, 1, 0, ]
|
r_dir.should be == [ 1, 1, 0, ]
|
|
|
end
|
end
|
|
|
|
end
|
|
|
|
|
|
describe SOCMaker::Component, "consistency_check" do
|
|
|
|
|
|
it "should throw an error if an incomplete interface is used" do
|
|
file = { "file.vhd".to_sym => SOCMaker::HDLFile.new( "./file.vhd" ) }
|
|
|
|
# three (auto) mandatory ports
|
|
ifc_s1 = SOCMaker::IfcSpc.new( "i1", "v1", 'ports' => { p1: { dir: 1}, p2: {dir: 1}, p3: {dir:0} } )
|
|
|
|
# interface implementaiton with only two of the three ports
|
|
p1 = SOCMaker::IfcPort.new( "p1", 1 )
|
|
p2 = SOCMaker::IfcPort.new( "p2", 2 )
|
|
ifc_d1 = SOCMaker::IfcDef.new( "i1", "v1", 0, { m_p1: p1, m_p2: p2 } )
|
|
|
|
c = SOCMaker::Component.new( "acore", "v1", "top",
|
|
{ 'interfaces' => { i1: ifc_d1 } } )
|
|
|
|
|
|
expect{ c.consistency_check }.
|
|
to raise_error( SOCMaker::ERR::ProcessingError )
|
|
|
end
|
end
|
|
|
|
end
|
|
|
|
# vim: noai:ts=2:sw=2
|