From e9ee56b7e8749c6f81d15c4e486ba47090d8e5ce Mon Sep 17 00:00:00 2001 From: Cyril Koenig Date: Tue, 29 Aug 2023 12:23:35 +0200 Subject: [PATCH] fpga: Correcting artifacts mngmt and applied new constraints to genesys2 --- hw/bootrom/cheshire_bootrom.c | 2 +- hw/bootrom/cheshire_bootrom.sv | 284 ++++++++++++------------- target/xilinx/constraints/genesys2.xdc | 29 ++- target/xilinx/scripts/run.tcl | 12 +- target/xilinx/xilinx/common.mk | 10 +- 5 files changed, 176 insertions(+), 161 deletions(-) diff --git a/hw/bootrom/cheshire_bootrom.c b/hw/bootrom/cheshire_bootrom.c index fcbc32577..0ba8d98d5 100644 --- a/hw/bootrom/cheshire_bootrom.c +++ b/hw/bootrom/cheshire_bootrom.c @@ -51,7 +51,7 @@ int boot_spi_sdcard(uint64_t core_freq, uint64_t rtc_freq) { int boot_spi_s25fs512s(uint64_t core_freq, uint64_t rtc_freq) { // Initialize device handle spi_s25fs512s_t device = { - .spi_freq = MIN(40 * 1000 * 1000, core_freq / 4), // Up to quarter core freq or 40MHz + .spi_freq = MIN(40 * 1000 * 1000, core_freq / 5), // Up to quarter core freq or 40MHz .csid = 1}; CHECK_CALL(spi_s25fs512s_init(&device, core_freq)) // Wait for device to be initialized (t_PU = 300us, round up extra tick to be sure) diff --git a/hw/bootrom/cheshire_bootrom.sv b/hw/bootrom/cheshire_bootrom.sv index f89b8eb5a..1edfc64ee 100644 --- a/hw/bootrom/cheshire_bootrom.sv +++ b/hw/bootrom/cheshire_bootrom.sv @@ -1406,9 +1406,9 @@ module cheshire_bootrom #( 1374: data_o = 32'hfaffe0ef /* 0x1578 */; 1375: data_o = 32'h84aa4989 /* 0x157c */; 1376: data_o = 32'h1d390863 /* 0x1580 */; - 1377: data_o = 32'h0e63478d /* 0x1584 */; - 1378: data_o = 32'h478526f9 /* 0x1588 */; - 1379: data_o = 32'h3cf91f63 /* 0x158c */; + 1377: data_o = 32'h0063478d /* 0x1584 */; + 1378: data_o = 32'h478528f9 /* 0x1588 */; + 1379: data_o = 32'h3ef91163 /* 0x158c */; 1380: data_o = 32'h016e37b7 /* 0x1590 */; 1381: data_o = 32'h60078713 /* 0x1594 */; 1382: data_o = 32'hec3ad002 /* 0x1598 */; @@ -1521,146 +1521,146 @@ module cheshire_bootrom #( 1489: data_o = 32'h74a67446 /* 0x1744 */; 1490: data_o = 32'h69e67906 /* 0x1748 */; 1491: data_o = 32'h80826109 /* 0x174c */; - 1492: data_o = 32'h098967b7 /* 0x1750 */; + 1492: data_o = 32'h0bebc7b7 /* 0x1750 */; 1493: data_o = 32'h8793fc02 /* 0x1754 */; - 1494: data_o = 32'h59137ff7 /* 0x1758 */; - 1495: data_o = 32'hf6630025 /* 0x175c */; - 1496: data_o = 32'h693700a7 /* 0x1760 */; - 1497: data_o = 32'h09130262 /* 0x1764 */; - 1498: data_o = 32'h4785a009 /* 0x1768 */; - 1499: data_o = 32'hdc3ef84a /* 0x176c */; - 1500: data_o = 32'h08e3454d /* 0x1770 */; - 1501: data_o = 32'h4551fc09 /* 0x1774 */; - 1502: data_o = 32'hfd24e5e3 /* 0x1778 */; - 1503: data_o = 32'h01003517 /* 0x177c */; - 1504: data_o = 32'h88450513 /* 0x1780 */; - 1505: data_o = 32'hf0eff42a /* 0x1784 */; - 1506: data_o = 32'h17b7818f /* 0x1788 */; - 1507: data_o = 32'h8793000f /* 0x178c */; - 1508: data_o = 32'hc84af0f7 /* 0x1790 */; - 1509: data_o = 32'hcc3eca26 /* 0x1794 */; - 1510: data_o = 32'h00011e23 /* 0x1798 */; - 1511: data_o = 32'h666265c2 /* 0x179c */; - 1512: data_o = 32'h10284685 /* 0x17a0 */; - 1513: data_o = 32'hcf7fe0ef /* 0x17a4 */; - 1514: data_o = 32'hfd412501 /* 0x17a8 */; - 1515: data_o = 32'h01003797 /* 0x17ac */; - 1516: data_o = 32'h85478793 /* 0x17b0 */; - 1517: data_o = 32'h80000737 /* 0x17b4 */; - 1518: data_o = 32'h3797cb98 /* 0x17b8 */; - 1519: data_o = 32'h87930100 /* 0x17bc */; - 1520: data_o = 32'h4b9c8467 /* 0x17c0 */; - 1521: data_o = 32'he0000737 /* 0x17c4 */; - 1522: data_o = 32'h8ff9177d /* 0x17c8 */; - 1523: data_o = 32'h20000737 /* 0x17cc */; - 1524: data_o = 32'h37178fd9 /* 0x17d0 */; - 1525: data_o = 32'h07130100 /* 0x17d4 */; - 1526: data_o = 32'hcb1c82e7 /* 0x17d8 */; - 1527: data_o = 32'h15e00793 /* 0x17dc */; - 1528: data_o = 32'h02f40533 /* 0x17e0 */; - 1529: data_o = 32'h000f47b7 /* 0x17e4 */; - 1530: data_o = 32'h24078793 /* 0x17e8 */; - 1531: data_o = 32'h02f55533 /* 0x17ec */; - 1532: data_o = 32'he0ef0505 /* 0x17f0 */; - 1533: data_o = 32'hf5179c9f /* 0x17f4 */; - 1534: data_o = 32'h102cffff /* 0x17f8 */; - 1535: data_o = 32'h3d050513 /* 0x17fc */; - 1536: data_o = 32'h4549bf3d /* 0x1800 */; - 1537: data_o = 32'hd5b7dc9d /* 0x1804 */; - 1538: data_o = 32'h85933b9a /* 0x1808 */; - 1539: data_o = 32'hd5b3a005 /* 0x180c */; - 1540: data_o = 32'h17970295 /* 0x1810 */; - 1541: data_o = 32'h87930100 /* 0x1814 */; - 1542: data_o = 32'hf43e7ee7 /* 0x1818 */; - 1543: data_o = 32'h01001797 /* 0x181c */; - 1544: data_o = 32'h7e478793 /* 0x1820 */; - 1545: data_o = 32'h17974b98 /* 0x1824 */; - 1546: data_o = 32'h87930100 /* 0x1828 */; - 1547: data_o = 32'h9b797da7 /* 0x182c */; - 1548: data_o = 32'h1797cb98 /* 0x1830 */; - 1549: data_o = 32'h87930100 /* 0x1834 */; - 1550: data_o = 32'h53987ce7 /* 0x1838 */; - 1551: data_o = 32'h01001797 /* 0x183c */; - 1552: data_o = 32'h7c478793 /* 0x1840 */; - 1553: data_o = 32'h08076713 /* 0x1844 */; - 1554: data_o = 32'h1797d398 /* 0x1848 */; - 1555: data_o = 32'h87930100 /* 0x184c */; - 1556: data_o = 32'h53987b67 /* 0x1850 */; - 1557: data_o = 32'h01001797 /* 0x1854 */; - 1558: data_o = 32'h7ac78793 /* 0x1858 */; - 1559: data_o = 32'h00276713 /* 0x185c */; - 1560: data_o = 32'h1797d398 /* 0x1860 */; - 1561: data_o = 32'h87930100 /* 0x1864 */; - 1562: data_o = 32'h539879e7 /* 0x1868 */; - 1563: data_o = 32'h01001797 /* 0x186c */; - 1564: data_o = 32'h79478793 /* 0x1870 */; - 1565: data_o = 32'h00176713 /* 0x1874 */; - 1566: data_o = 32'h1797d398 /* 0x1878 */; - 1567: data_o = 32'h87930100 /* 0x187c */; - 1568: data_o = 32'h53987867 /* 0x1880 */; - 1569: data_o = 32'h01001797 /* 0x1884 */; - 1570: data_o = 32'h77c78793 /* 0x1888 */; - 1571: data_o = 32'h10076713 /* 0x188c */; - 1572: data_o = 32'h51300513 /* 0x1890 */; - 1573: data_o = 32'h06300613 /* 0x1894 */; - 1574: data_o = 32'h6685d398 /* 0x1898 */; - 1575: data_o = 32'h12b00713 /* 0x189c */; - 1576: data_o = 32'h9c36869b /* 0x18a0 */; - 1577: data_o = 32'h25700793 /* 0x18a4 */; - 1578: data_o = 32'h02b5553b /* 0x18a8 */; - 1579: data_o = 32'h02b6563b /* 0x18ac */; - 1580: data_o = 32'h91411542 /* 0x18b0 */; - 1581: data_o = 32'h0015081b /* 0x18b4 */; - 1582: data_o = 32'h0108181b /* 0x18b8 */; - 1583: data_o = 32'h02b7573b /* 0x18bc */; - 1584: data_o = 32'h16422605 /* 0x18c0 */; - 1585: data_o = 32'hd6bb9241 /* 0x18c4 */; - 1586: data_o = 32'h270502b6 /* 0x18c8 */; - 1587: data_o = 32'h93411742 /* 0x18cc */; - 1588: data_o = 32'h02b7d7bb /* 0x18d0 */; - 1589: data_o = 32'h9e919e89 /* 0x18d4 */; - 1590: data_o = 32'h85b69e99 /* 0x18d8 */; - 1591: data_o = 32'h92c116c2 /* 0x18dc */; - 1592: data_o = 32'h17c22785 /* 0x18e0 */; - 1593: data_o = 32'hf36393c1 /* 0x18e4 */; - 1594: data_o = 32'h85be00f6 /* 0x18e8 */; - 1595: data_o = 32'h0105959b /* 0x18ec */; - 1596: data_o = 32'h0105d59b /* 0x18f0 */; - 1597: data_o = 32'h0105e5b3 /* 0x18f4 */; - 1598: data_o = 32'h01001697 /* 0x18f8 */; - 1599: data_o = 32'h86932581 /* 0x18fc */; - 1600: data_o = 32'h171b7086 /* 0x1900 */; - 1601: data_o = 32'hda8c0107 /* 0x1904 */; - 1602: data_o = 32'h16978f51 /* 0x1908 */; - 1603: data_o = 32'h27010100 /* 0x190c */; - 1604: data_o = 32'h6f668693 /* 0x1910 */; - 1605: data_o = 32'h971bdad8 /* 0x1914 */; - 1606: data_o = 32'h8f5d0107 /* 0x1918 */; - 1607: data_o = 32'h01001697 /* 0x191c */; - 1608: data_o = 32'h86932701 /* 0x1920 */; - 1609: data_o = 32'hde986e46 /* 0x1924 */; - 1610: data_o = 32'h8e596741 /* 0x1928 */; - 1611: data_o = 32'h01001717 /* 0x192c */; - 1612: data_o = 32'h6d470713 /* 0x1930 */; - 1613: data_o = 32'he7b3df50 /* 0x1934 */; - 1614: data_o = 32'h17170107 /* 0x1938 */; - 1615: data_o = 32'h27810100 /* 0x193c */; - 1616: data_o = 32'h6c670713 /* 0x1940 */; - 1617: data_o = 32'h1797c33c /* 0x1944 */; - 1618: data_o = 32'h87930100 /* 0x1948 */; - 1619: data_o = 32'h4b986ba7 /* 0x194c */; - 1620: data_o = 32'h01001797 /* 0x1950 */; - 1621: data_o = 32'h6b078793 /* 0x1954 */; - 1622: data_o = 32'h00176713 /* 0x1958 */; - 1623: data_o = 32'hfffff517 /* 0x195c */; - 1624: data_o = 32'h102ccb98 /* 0x1960 */; - 1625: data_o = 32'hac650513 /* 0x1964 */; - 1626: data_o = 32'h7446bbd9 /* 0x1968 */; - 1627: data_o = 32'h74a670e6 /* 0x196c */; - 1628: data_o = 32'h69e67906 /* 0x1970 */; - 1629: data_o = 32'he06f6109 /* 0x1974 */; - 1630: data_o = 32'h0000e4df /* 0x1978 */; - 1631: data_o = 32'h00000000 /* 0x197c */; + 1494: data_o = 32'he1631ff7 /* 0x1758 */; + 1495: data_o = 32'h49150aa7 /* 0x175c */; + 1496: data_o = 32'h03255933 /* 0x1760 */; + 1497: data_o = 32'hf84a4785 /* 0x1764 */; + 1498: data_o = 32'h454ddc3e /* 0x1768 */; + 1499: data_o = 32'hfc090be3 /* 0x176c */; + 1500: data_o = 32'he8e34551 /* 0x1770 */; + 1501: data_o = 32'h3517fd24 /* 0x1774 */; + 1502: data_o = 32'h05130100 /* 0x1778 */; + 1503: data_o = 32'hf42a88a5 /* 0x177c */; + 1504: data_o = 32'h81eff0ef /* 0x1780 */; + 1505: data_o = 32'h000f17b7 /* 0x1784 */; + 1506: data_o = 32'hf0f78793 /* 0x1788 */; + 1507: data_o = 32'hca26c84a /* 0x178c */; + 1508: data_o = 32'h1e23cc3e /* 0x1790 */; + 1509: data_o = 32'h65c20001 /* 0x1794 */; + 1510: data_o = 32'h46856662 /* 0x1798 */; + 1511: data_o = 32'he0ef1028 /* 0x179c */; + 1512: data_o = 32'h2501cfdf /* 0x17a0 */; + 1513: data_o = 32'h3797fd59 /* 0x17a4 */; + 1514: data_o = 32'h87930100 /* 0x17a8 */; + 1515: data_o = 32'h073785a7 /* 0x17ac */; + 1516: data_o = 32'hcb988000 /* 0x17b0 */; + 1517: data_o = 32'h01003797 /* 0x17b4 */; + 1518: data_o = 32'h84c78793 /* 0x17b8 */; + 1519: data_o = 32'h07374b9c /* 0x17bc */; + 1520: data_o = 32'h177de000 /* 0x17c0 */; + 1521: data_o = 32'h07378ff9 /* 0x17c4 */; + 1522: data_o = 32'h8fd92000 /* 0x17c8 */; + 1523: data_o = 32'h01003717 /* 0x17cc */; + 1524: data_o = 32'h83470713 /* 0x17d0 */; + 1525: data_o = 32'h0793cb1c /* 0x17d4 */; + 1526: data_o = 32'h053315e0 /* 0x17d8 */; + 1527: data_o = 32'h47b702f4 /* 0x17dc */; + 1528: data_o = 32'h8793000f /* 0x17e0 */; + 1529: data_o = 32'h55332407 /* 0x17e4 */; + 1530: data_o = 32'h050502f5 /* 0x17e8 */; + 1531: data_o = 32'h9cffe0ef /* 0x17ec */; + 1532: data_o = 32'hfffff517 /* 0x17f0 */; + 1533: data_o = 32'h0513102c /* 0x17f4 */; + 1534: data_o = 32'hb7913d65 /* 0x17f8 */; + 1535: data_o = 32'h02626937 /* 0x17fc */; + 1536: data_o = 32'ha0090913 /* 0x1800 */; + 1537: data_o = 32'h4549b785 /* 0x1804 */; + 1538: data_o = 32'hd5b7dc8d /* 0x1808 */; + 1539: data_o = 32'h85933b9a /* 0x180c */; + 1540: data_o = 32'hd5b3a005 /* 0x1810 */; + 1541: data_o = 32'h17970295 /* 0x1814 */; + 1542: data_o = 32'h87930100 /* 0x1818 */; + 1543: data_o = 32'hf43e7ea7 /* 0x181c */; + 1544: data_o = 32'h01001797 /* 0x1820 */; + 1545: data_o = 32'h7e078793 /* 0x1824 */; + 1546: data_o = 32'h17974b98 /* 0x1828 */; + 1547: data_o = 32'h87930100 /* 0x182c */; + 1548: data_o = 32'h9b797d67 /* 0x1830 */; + 1549: data_o = 32'h1797cb98 /* 0x1834 */; + 1550: data_o = 32'h87930100 /* 0x1838 */; + 1551: data_o = 32'h53987ca7 /* 0x183c */; + 1552: data_o = 32'h01001797 /* 0x1840 */; + 1553: data_o = 32'h7c078793 /* 0x1844 */; + 1554: data_o = 32'h08076713 /* 0x1848 */; + 1555: data_o = 32'h1797d398 /* 0x184c */; + 1556: data_o = 32'h87930100 /* 0x1850 */; + 1557: data_o = 32'h53987b27 /* 0x1854 */; + 1558: data_o = 32'h01001797 /* 0x1858 */; + 1559: data_o = 32'h7a878793 /* 0x185c */; + 1560: data_o = 32'h00276713 /* 0x1860 */; + 1561: data_o = 32'h1797d398 /* 0x1864 */; + 1562: data_o = 32'h87930100 /* 0x1868 */; + 1563: data_o = 32'h539879a7 /* 0x186c */; + 1564: data_o = 32'h01001797 /* 0x1870 */; + 1565: data_o = 32'h79078793 /* 0x1874 */; + 1566: data_o = 32'h00176713 /* 0x1878 */; + 1567: data_o = 32'h1797d398 /* 0x187c */; + 1568: data_o = 32'h87930100 /* 0x1880 */; + 1569: data_o = 32'h53987827 /* 0x1884 */; + 1570: data_o = 32'h01001797 /* 0x1888 */; + 1571: data_o = 32'h77878793 /* 0x188c */; + 1572: data_o = 32'h10076713 /* 0x1890 */; + 1573: data_o = 32'h51300513 /* 0x1894 */; + 1574: data_o = 32'h06300613 /* 0x1898 */; + 1575: data_o = 32'h6685d398 /* 0x189c */; + 1576: data_o = 32'h12b00713 /* 0x18a0 */; + 1577: data_o = 32'h9c36869b /* 0x18a4 */; + 1578: data_o = 32'h25700793 /* 0x18a8 */; + 1579: data_o = 32'h02b5553b /* 0x18ac */; + 1580: data_o = 32'h02b6563b /* 0x18b0 */; + 1581: data_o = 32'h91411542 /* 0x18b4 */; + 1582: data_o = 32'h0015081b /* 0x18b8 */; + 1583: data_o = 32'h0108181b /* 0x18bc */; + 1584: data_o = 32'h02b7573b /* 0x18c0 */; + 1585: data_o = 32'h16422605 /* 0x18c4 */; + 1586: data_o = 32'hd6bb9241 /* 0x18c8 */; + 1587: data_o = 32'h270502b6 /* 0x18cc */; + 1588: data_o = 32'h93411742 /* 0x18d0 */; + 1589: data_o = 32'h02b7d7bb /* 0x18d4 */; + 1590: data_o = 32'h9e919e89 /* 0x18d8 */; + 1591: data_o = 32'h85b69e99 /* 0x18dc */; + 1592: data_o = 32'h92c116c2 /* 0x18e0 */; + 1593: data_o = 32'h17c22785 /* 0x18e4 */; + 1594: data_o = 32'hf36393c1 /* 0x18e8 */; + 1595: data_o = 32'h85be00f6 /* 0x18ec */; + 1596: data_o = 32'h0105959b /* 0x18f0 */; + 1597: data_o = 32'h0105d59b /* 0x18f4 */; + 1598: data_o = 32'h0105e5b3 /* 0x18f8 */; + 1599: data_o = 32'h01001697 /* 0x18fc */; + 1600: data_o = 32'h86932581 /* 0x1900 */; + 1601: data_o = 32'h171b7046 /* 0x1904 */; + 1602: data_o = 32'hda8c0107 /* 0x1908 */; + 1603: data_o = 32'h16978f51 /* 0x190c */; + 1604: data_o = 32'h27010100 /* 0x1910 */; + 1605: data_o = 32'h6f268693 /* 0x1914 */; + 1606: data_o = 32'h971bdad8 /* 0x1918 */; + 1607: data_o = 32'h8f5d0107 /* 0x191c */; + 1608: data_o = 32'h01001697 /* 0x1920 */; + 1609: data_o = 32'h86932701 /* 0x1924 */; + 1610: data_o = 32'hde986e06 /* 0x1928 */; + 1611: data_o = 32'h8e596741 /* 0x192c */; + 1612: data_o = 32'h01001717 /* 0x1930 */; + 1613: data_o = 32'h6d070713 /* 0x1934 */; + 1614: data_o = 32'he7b3df50 /* 0x1938 */; + 1615: data_o = 32'h17170107 /* 0x193c */; + 1616: data_o = 32'h27810100 /* 0x1940 */; + 1617: data_o = 32'h6c270713 /* 0x1944 */; + 1618: data_o = 32'h1797c33c /* 0x1948 */; + 1619: data_o = 32'h87930100 /* 0x194c */; + 1620: data_o = 32'h4b986b67 /* 0x1950 */; + 1621: data_o = 32'h01001797 /* 0x1954 */; + 1622: data_o = 32'h6ac78793 /* 0x1958 */; + 1623: data_o = 32'h00176713 /* 0x195c */; + 1624: data_o = 32'hfffff517 /* 0x1960 */; + 1625: data_o = 32'h102ccb98 /* 0x1964 */; + 1626: data_o = 32'hac250513 /* 0x1968 */; + 1627: data_o = 32'h7446bbc9 /* 0x196c */; + 1628: data_o = 32'h74a670e6 /* 0x1970 */; + 1629: data_o = 32'h69e67906 /* 0x1974 */; + 1630: data_o = 32'he06f6109 /* 0x1978 */; + 1631: data_o = 32'h0000e49f /* 0x197c */; 1632: data_o = 32'h10210000 /* 0x1980 */; 1633: data_o = 32'h30632042 /* 0x1984 */; 1634: data_o = 32'h50a54084 /* 0x1988 */; diff --git a/target/xilinx/constraints/genesys2.xdc b/target/xilinx/constraints/genesys2.xdc index 330fadadc..c53111e80 100644 --- a/target/xilinx/constraints/genesys2.xdc +++ b/target/xilinx/constraints/genesys2.xdc @@ -7,7 +7,7 @@ ##################### # 50 MHz SoC clock -set soc_clk clk_50 +set soc_clk clk_50_xlnx_clk_wiz set SOC_TCK 20.0 # I2C High-speed mode is 3.2 Mb/s @@ -28,26 +28,35 @@ set_case_analysis 0 [get_ports testmode_i] set SYS_TCK 5 create_clock -period $SYS_TCK -name sys_clk [get_pins u_ibufg_sys_clk/O] set_property CLOCK_DEDICATED_ROUTE BACKBONE [get_pins u_ibufg_sys_clk/O] -set_clock_groups -name sys_clk_async -asynchronous -group {sys_clk} ############# # Mig clock # ############# -# Dram axi clock : 200MHz +# Dram axi clock : 200 MHz set MIG_TCK 5 -set MIG_RST [get_nets i_dram_wrapper/dram_rst_o] -create_clock -period $MIG_TCK -name dram_axi_clk [get_pins i_dram_wrapper/i_dram/ui_clk] -set_clock_groups -name dram_async -asynchronous -group {dram_axi_clk} -set_false_path -hold -through $MIG_RST -set_max_delay -through $MIG_RST $MIG_TCK +create_generated_clock -source [get_pins i_dram_wrapper/i_dram/u_xlnx_mig_7_ddr3_mig/u_ddr3_infrastructure/gen_mmcm.mmcm_i/CLKFBOUT] \ + -divide_by 1 -add -master_clock clk_pll_i -name dram_axi_clk [get_pins i_dram_wrapper/i_dram/ui_clk] +# Aynch reset in +set MIG_RST_I [get_pin i_dram_wrapper/i_dram/aresetn] +set_false_path -hold -setup -through $MIG_RST_I +# Synch reset out +set MIG_RST_O [get_pins i_dram_wrapper/i_dram/ui_clk] +set_false_path -hold -through $MIG_RST_O +set_max_delay -through $MIG_RST_O $MIG_TCK ######## # CDCs # ######## -set_max_delay -through [get_nets -of_objects [get_cells i_dram_wrapper/gen_cdc.i_axi_cdc_mig/i_axi_cdc_*/i_cdc_fifo_gray_*/*] -filter {NAME=~*async*}] $MIG_TCK -set_max_delay -datapath -from [get_pins i_dram_wrapper/gen_cdc.i_axi_cdc_mig/i_axi_cdc_*/i_cdc_fifo_gray_*/*reg*/C] -to [get_pins i_dram_wrapper/gen_cdc.i_axi_cdc_mig/i_axi_cdc_*/i_cdc_fifo_gray_dst_*/*i_sync/reg*/D] $MIG_TCK +set_max_delay -datapath \ + -from [get_pins i_dram_wrapper/gen_cdc.i_axi_cdc_mig/i_axi_cdc_*/i_cdc_fifo_gray_*/*reg*/C] \ + -to [get_pins i_dram_wrapper/gen_cdc.i_axi_cdc_mig/i_axi_cdc_*/i_cdc_fifo_gray_*/*i_sync/reg*/D] $MIG_TCK + +set_max_delay -datapath \ + -from [get_pins i_dram_wrapper/gen_cdc.i_axi_cdc_mig/i_axi_cdc_*/i_cdc_fifo_gray_*/*reg*/C] \ + -to [get_pins i_dram_wrapper/gen_cdc.i_axi_cdc_mig/i_axi_cdc_*/i_cdc_fifo_gray_*/i_spill_register/spill_register_flushable_i/*reg*/D] $MIG_TCK + ####### # VGA # diff --git a/target/xilinx/scripts/run.tcl b/target/xilinx/scripts/run.tcl index b7711cda8..72de2637c 100644 --- a/target/xilinx/scripts/run.tcl +++ b/target/xilinx/scripts/run.tcl @@ -2,7 +2,13 @@ # Solderpad Hardware License, Version 0.51, see LICENSE for details. # SPDX-License-Identifier: SHL-0.51 # -# Author: Florian Zaruba +# Florian Zaruba +# Nils Wistoff +# Cyril Koenig + +# Ips selection +set ips $::env(IP_PATHS) +read_ip $ips # Contraints files selection switch $::env(BOARD) { @@ -15,10 +21,6 @@ switch $::env(BOARD) { } } -# Ips selection -set ips $::env(IP_PATHS) -read_ip $ips - source scripts/add_sources.tcl set_property top ${project}_top_xilinx [current_fileset] diff --git a/target/xilinx/xilinx/common.mk b/target/xilinx/xilinx/common.mk index 3dc93888c..2b847c076 100644 --- a/target/xilinx/xilinx/common.mk +++ b/target/xilinx/xilinx/common.mk @@ -12,6 +12,8 @@ endif # Note: We do not use Memora as it is bound to Git versionning # and not standalone on files hash / environment variables ARTIFACTS_PATH=/usr/scratch2/wuerzburg/cykoenig/memora/cheshire +GREEN='\033[0;32m' +NC='\033[0m' all: @@ -36,13 +38,15 @@ generate_sha256: # Load artifacts based on .generated_sha256 load-artifacts: .generated_sha256 @if [ -d "$(ARTIFACTS_PATH)/`cat $<`" ]; then\ - echo "Fetching $(PROJECT) from $(ARTIFACTS_PATH)/`cat $<`"; \ - cp -r -d $(ARTIFACTS_PATH)/`cat $<`/* .; \ + echo -e $(GREEN)"Fetching $(PROJECT) from $(ARTIFACTS_PATH)/`cat $<`"$(NC); \ + cp -r $(ARTIFACTS_PATH)/`cat $<`/* .; \ fi # Save artifacts (this folder) based on .generated_sha256 save-artifacts: generate_sha256 load-artifacts $(PROJECT).xpr - cp -r . $(ARTIFACTS_PATH)/`cat .generated_sha256`/ + @if [ ! -d "$(ARTIFACTS_PATH)/`cat .generated_sha256`" ]; then \ + cp -r . $(ARTIFACTS_PATH)/`cat .generated_sha256`; \ + fi gui: $(VIVADOENV) $(VIVADO) -mode gui -source tcl/run.tcl &