00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <boost/test/unit_test.hpp>
00020 #include "torc/architecture/DDB.hpp"
00021 #include "torc/architecture/DDBStreamHelper.hpp"
00022 #include "torc/architecture/OutputStreamHelpers.hpp"
00023 #include "torc/common/Devices.hpp"
00024 #include "torc/architecture/XilinxDatabaseTypes.hpp"
00025 #include "torc/architecture/Array.hpp"
00026 #include "torc/architecture/Sites.hpp"
00027 #include <iostream>
00028
00029 namespace torc {
00030 namespace architecture {
00031
00032 BOOST_AUTO_TEST_SUITE(architecture)
00033
00034 using namespace torc::architecture::xilinx;
00035
00036 void testDevice(const std::string& inDeviceName);
00037 void testDevice(const std::string& inDeviceName) {
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 DDB ddb(inDeviceName);
00049
00050
00051
00052 BOOST_CHECK_EQUAL(ddb.getDeviceName(), inDeviceName);
00053
00054
00055
00056 if(true) return;
00057
00058
00059
00060 std::map<TileTypeIndex, int> tileTypeMap;
00061 const Tiles& tiles = ddb.getTiles();
00062 TileCount tileCount = tiles.getTileCount();
00063 for(TileIndex tileIndex; tileIndex < tileCount; tileIndex++) {
00064 const TileInfo& tileInfo = tiles.getTileInfo(tileIndex);
00065 TileTypeIndex tileTypeIndex = tileInfo.getTypeIndex();
00066 const std::string& tileTypeName = tiles.getTileTypeName(tileTypeIndex);
00067 tileTypeMap[tileTypeIndex] = 0;
00068 (void) tileTypeName;
00069 }
00070 std::cout << tileTypeMap.size() << " tile types" << std::endl;
00071
00072
00073
00074 std::map<std::string, int> siteTypeMap;
00075 const Sites& sites = ddb.getSites();
00076 SiteCount siteCount = sites.getSiteCount();
00077 for(SiteIndex siteIndex; siteIndex < siteCount; siteIndex++) {
00078 const Site& site = sites.getSite(siteIndex);
00079 const std::string& siteTypeName = site.getPrimitiveDefPtr()->getName();
00080 siteTypeMap[siteTypeName] = 0;
00081 }
00082 std::cout << ddb;
00083 std::cout << siteTypeMap.size() << " site types" << std::endl;
00084 }
00085
00086
00087 BOOST_AUTO_TEST_CASE(DDBUnitTest) {
00088
00089 const torc::common::DeviceVector& devices = torc::common::Devices::getUnitTestDevices();
00090 torc::common::DeviceVector::const_iterator dp = devices.begin();
00091 torc::common::DeviceVector::const_iterator de = devices.end();
00092 while(dp < de) {
00093 const std::string& device = *dp++;
00094 if(device.empty()) break;
00095 testDevice(device);
00096 }
00097 }
00098
00099 BOOST_AUTO_TEST_SUITE_END()
00100
00101 }
00102 }