diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..54673e6 --- /dev/null +++ b/Makefile @@ -0,0 +1,12 @@ +serve: install + bundle exec jekyll serve --livereload + +install: + bundle install + +build: install + bundle exec jekyll build + +check_links: build + bundle exec htmlproofer --ignore_missing_alt true --ignore_empty_alt true --ignore_status_code "0,403" ./_site + diff --git a/README.md b/README.md new file mode 100644 index 0000000..d0d862b --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +## BYU CCL website + +This is the website for the BYU Configurable Computing Lab. + +This website is created using [Jekyll](https://jekyllrb.com/). + +Committing to this repo will automatically update the CCL website. See the [How To Wiki page](https://github.com/byuccl/byuccl.github.io/wiki/How-To-Make-CCL-Website-Changes) diff --git a/assets/ashcraft_fpt18.pdf b/assets/ashcraft_fpt18.pdf new file mode 100644 index 0000000..b71bae3 Binary files /dev/null and b/assets/ashcraft_fpt18.pdf differ diff --git a/assets/ashcraft_fpt19.pdf b/assets/ashcraft_fpt19.pdf new file mode 100755 index 0000000..5455410 Binary files /dev/null and b/assets/ashcraft_fpt19.pdf differ diff --git a/assets/bohman_tns18.pdf b/assets/bohman_tns18.pdf new file mode 100755 index 0000000..6272bf0 Binary files /dev/null and b/assets/bohman_tns18.pdf differ diff --git a/assets/cahill_trets21.pdf b/assets/cahill_trets21.pdf new file mode 100644 index 0000000..8058c7f Binary files /dev/null and b/assets/cahill_trets21.pdf differ diff --git a/assets/coast_tns20.pdf b/assets/coast_tns20.pdf new file mode 100755 index 0000000..810a3fa Binary files /dev/null and b/assets/coast_tns20.pdf differ diff --git a/assets/cook_fpt22.pdf b/assets/cook_fpt22.pdf new file mode 100644 index 0000000..705e1dd Binary files /dev/null and b/assets/cook_fpt22.pdf differ diff --git a/assets/cook_trets22.pdf b/assets/cook_trets22.pdf new file mode 100644 index 0000000..f5a23b6 Binary files /dev/null and b/assets/cook_trets22.pdf differ diff --git a/assets/gaskin_fpl20.pdf b/assets/gaskin_fpl20.pdf new file mode 100644 index 0000000..3f8f468 Binary files /dev/null and b/assets/gaskin_fpl20.pdf differ diff --git a/assets/goeders_fccm17.pdf b/assets/goeders_fccm17.pdf new file mode 100755 index 0000000..b3dfdd3 Binary files /dev/null and b/assets/goeders_fccm17.pdf differ diff --git a/assets/hastings_ivsw18.pdf b/assets/hastings_ivsw18.pdf new file mode 100755 index 0000000..f3fb63a Binary files /dev/null and b/assets/hastings_ivsw18.pdf differ diff --git a/assets/jamal_trets20.pdf b/assets/jamal_trets20.pdf new file mode 100755 index 0000000..ec1a358 Binary files /dev/null and b/assets/jamal_trets20.pdf differ diff --git a/assets/james_tns21.pdf b/assets/james_tns21.pdf new file mode 100644 index 0000000..ce1217f Binary files /dev/null and b/assets/james_tns21.pdf differ diff --git a/assets/mckendrick_fpt22.pdf b/assets/mckendrick_fpt22.pdf new file mode 100644 index 0000000..6e4f80c Binary files /dev/null and b/assets/mckendrick_fpt22.pdf differ diff --git a/assets/mckendrick_fpt23.pdf b/assets/mckendrick_fpt23.pdf new file mode 100644 index 0000000..1a10d66 Binary files /dev/null and b/assets/mckendrick_fpt23.pdf differ diff --git a/assets/pynq_fccm18.pdf b/assets/pynq_fccm18.pdf new file mode 100644 index 0000000..20652d9 Binary files /dev/null and b/assets/pynq_fccm18.pdf differ diff --git a/assets/stirk_reconfig19.pdf b/assets/stirk_reconfig19.pdf new file mode 100755 index 0000000..f11e6be Binary files /dev/null and b/assets/stirk_reconfig19.pdf differ diff --git a/assets/stirk_tns23.pdf b/assets/stirk_tns23.pdf new file mode 100644 index 0000000..cd34238 Binary files /dev/null and b/assets/stirk_tns23.pdf differ diff --git a/assets/xbert_fccm21.pdf b/assets/xbert_fccm21.pdf new file mode 100644 index 0000000..ea85f27 Binary files /dev/null and b/assets/xbert_fccm21.pdf differ diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..11941cd --- /dev/null +++ b/css/main.css @@ -0,0 +1,861 @@ +/** + * Reset some basic elements + */ +body, h1, h2, h3, h4, h5, h6, +p, blockquote, pre, hr, +dl, dd, ol, ul, figure { + margin: 0; + padding: 0; +} + +/** + * Basic styling + */ +body { + font: 400 16px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #111; + background-color: #fdfdfd; + -webkit-text-size-adjust: 100%; + -webkit-font-feature-settings: "kern" 1; + -moz-font-feature-settings: "kern" 1; + -o-font-feature-settings: "kern" 1; + font-feature-settings: "kern" 1; + font-kerning: normal; +} + +/** + * Set `margin-bottom` to maintain vertical rhythm + */ +h1, h2, h3, h4, h5, h6, +p, blockquote, pre, +ul, ol, dl, figure, +.highlight { + margin-bottom: 15px; +} + +/** + * Images + */ +img { + max-width: 100%; + vertical-align: middle; +} + +/** + * Figures + */ +figure > img { + display: block; +} + +figcaption { + font-size: 14px; +} + +/** + * Lists + */ +ul, ol { + margin-left: 30px; +} + +li > ul, +li > ol { + margin-bottom: 0; +} + +/** + * Headings + */ +h1, h2, h3, h4, h5, h6 { + font-weight: 400; +} + +/** + * Links + */ +a { + color: #2a7ae2; + text-decoration: none; +} +a:visited { + color: #1756a9; +} +a:hover { + color: #111; + text-decoration: underline; +} + +/** + * Blockquotes + */ +blockquote { + color: #424242; + border-left: 4px solid #a8a8a8; + padding-left: 15px; + font-size: 18px; + letter-spacing: -1px; + font-style: italic; +} +blockquote > :last-child { + margin-bottom: 0; +} + +/** + * Code formatting + */ +pre, +code { + font-size: 15px; + border: 1px solid #a8a8a8; + border-radius: 3px; + background-color: #eef; +} + +code { + padding: 1px 5px; +} + +pre { + padding: 8px 12px; + overflow-x: auto; +} +pre > code { + border: 0; + padding-right: 0; + padding-left: 0; +} + +/** + * Wrapper + */ +.wrapper { + max-width: -webkit-calc(1600px - (30px * 2)); + max-width: calc(1600px - (30px * 2)); + margin-right: auto; + margin-left: auto; + padding-right: 30px; + padding-left: 30px; +} +@media screen and (max-width: 800px) { + .wrapper { + max-width: -webkit-calc(1600px - (30px)); + max-width: calc(1600px - (30px)); + padding-right: 15px; + padding-left: 15px; + } +} + +/** + * Clearfix + */ +.footer-col-wrapper:after, .wrapper:after { + content: ""; + display: table; + clear: both; +} + +/** + * Icons + */ +.icon > svg { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; +} +.icon > svg path { + fill: #424242; +} + +.banner_div { + text-align: center; +} + +th, td { + padding: 5pt; + padding-left: 10pt; + border-bottom: 1px solid black; +} + +th { + border-top: 2px solid black; + border-bottom: 2px solid black; +} + +/** + * Site header + */ +.site-header { + border-top: 5px solid #020202; + border-bottom: 1px solid #a8a8a8; + min-height: 56px; + position: relative; +} + +.site-title { + font-size: 26px; + font-weight: 300; + line-height: 56px; + letter-spacing: -1px; + margin-bottom: 0; + float: left; +} +.site-title, .site-title:visited { + color: #020202; +} + +.site-nav { + float: right; + line-height: 56px; +} +.site-nav .menu-icon { + display: none; +} +.site-nav .page-link { + color: #111; + line-height: 1.5; +} +.site-nav .page-link:not(:last-child) { + margin-right: 20px; +} +@media screen and (max-width: 600px) { + .site-nav { + position: absolute; + top: 9px; + right: 15px; + background-color: #fdfdfd; + border: 1px solid #a8a8a8; + border-radius: 5px; + text-align: right; + } + .site-nav .menu-icon { + display: block; + float: right; + width: 36px; + height: 26px; + line-height: 0; + padding-top: 10px; + text-align: center; + } + .site-nav .menu-icon > svg { + width: 18px; + height: 15px; + } + .site-nav .menu-icon > svg path { + fill: #020202; + } + .site-nav .trigger { + clear: both; + display: none; + } + .site-nav:hover .trigger { + display: block; + padding-bottom: 5px; + } + .site-nav .page-link { + display: block; + padding: 5px 10px; + margin-left: 20px; + } + .site-nav .page-link:not(:last-child) { + margin-right: 0; + } +} + +/** + * Site footer + */ +.site-footer { + border-top: 1px solid #a8a8a8; + padding: 30px 0; +} + +.footer-heading { + font-size: 18px; + margin-bottom: 15px; +} + +.contact-list, +.social-media-list { + list-style: none; + margin-left: 0; +} + +.footer-col-wrapper { + font-size: 15px; + color: #424242; + margin-left: 15px; +} + +.footer-col { + float: left; + margin-bottom: 15px; + padding-left: 15px; +} + +.footer-col-1 { + width: -webkit-calc(35% - (30px / 2)); + width: calc(35% - (30px / 2)); +} + +.footer-col-2 { + width: -webkit-calc(20% - (30px / 2)); + width: calc(20% - (30px / 2)); +} + +.footer-col-3 { + width: -webkit-calc(45% - (30px / 2)); + width: calc(45% - (30px / 2)); +} + +@media screen and (max-width: 800px) { + .footer-col-1, + .footer-col-2 { + width: -webkit-calc(50% - (30px / 2)); + width: calc(50% - (30px / 2)); + } + .footer-col-3 { + width: -webkit-calc(100% - (30px / 2)); + width: calc(100% - (30px / 2)); + } +} +@media screen and (max-width: 600px) { + .footer-col { + float: none; + width: -webkit-calc(100% - (30px / 2)); + width: calc(100% - (30px / 2)); + } +} +/** + * Page content + */ +.page-content { + padding: 30px 0; +} + +.page-heading { + font-size: 20px; +} + +.post-list { + margin-left: 0; + list-style: none; +} +.post-list > li { + margin-bottom: 30px; +} + +.post-meta { + font-size: 14px; + color: #424242; +} + +.post-link { + display: block; + font-size: 24px; +} + +/** + * Posts + */ +.post-header { + margin-bottom: 30px; +} + +.post-title { + font-size: 42px; + letter-spacing: -1px; + line-height: 1; +} +@media screen and (max-width: 800px) { + .post-title { + font-size: 36px; + } +} + +.post-content { + margin-bottom: 30px; +} +.post-content h2 { + font-size: 32px; +} +@media screen and (max-width: 800px) { + .post-content h2 { + font-size: 28px; + } +} +.post-content h3 { + font-size: 26px; +} +@media screen and (max-width: 800px) { + .post-content h3 { + font-size: 22px; + } +} +.post-content h4 { + font-size: 20px; +} +@media screen and (max-width: 800px) { + .post-content h4 { + font-size: 18px; + } +} + +/** + * Syntax highlighting styles + */ +.highlight { + background: #fff; +} +.highlighter-rouge .highlight { + background: #eef; +} +.highlight .c { + color: #998; + font-style: italic; +} +.highlight .err { + color: #a61717; + background-color: #e3d2d2; +} +.highlight .k { + font-weight: bold; +} +.highlight .o { + font-weight: bold; +} +.highlight .cm { + color: #998; + font-style: italic; +} +.highlight .cp { + color: #999; + font-weight: bold; +} +.highlight .c1 { + color: #998; + font-style: italic; +} +.highlight .cs { + color: #999; + font-weight: bold; + font-style: italic; +} +.highlight .gd { + color: #000; + background-color: #fdd; +} +.highlight .gd .x { + color: #000; + background-color: #faa; +} +.highlight .ge { + font-style: italic; +} +.highlight .gr { + color: #a00; +} +.highlight .gh { + color: #999; +} +.highlight .gi { + color: #000; + background-color: #dfd; +} +.highlight .gi .x { + color: #000; + background-color: #afa; +} +.highlight .go { + color: #888; +} +.highlight .gp { + color: #555; +} +.highlight .gs { + font-weight: bold; +} +.highlight .gu { + color: #aaa; +} +.highlight .gt { + color: #a00; +} +.highlight .kc { + font-weight: bold; +} +.highlight .kd { + font-weight: bold; +} +.highlight .kp { + font-weight: bold; +} +.highlight .kr { + font-weight: bold; +} +.highlight .kt { + color: #458; + font-weight: bold; +} +.highlight .m { + color: #099; +} +.highlight .s { + color: #d14; +} +.highlight .na { + color: #008080; +} +.highlight .nb { + color: #0086B3; +} +.highlight .nc { + color: #458; + font-weight: bold; +} +.highlight .no { + color: #008080; +} +.highlight .ni { + color: #800080; +} +.highlight .ne { + color: #900; + font-weight: bold; +} +.highlight .nf { + color: #900; + font-weight: bold; +} +.highlight .nn { + color: #555; +} +.highlight .nt { + color: #000080; +} +.highlight .nv { + color: #008080; +} +.highlight .ow { + font-weight: bold; +} +.highlight .w { + color: #bbb; +} +.highlight .mf { + color: #099; +} +.highlight .mh { + color: #099; +} +.highlight .mi { + color: #099; +} +.highlight .mo { + color: #099; +} +.highlight .sb { + color: #d14; +} +.highlight .sc { + color: #d14; +} +.highlight .sd { + color: #d14; +} +.highlight .s2 { + color: #d14; +} +.highlight .se { + color: #d14; +} +.highlight .sh { + color: #d14; +} +.highlight .si { + color: #d14; +} +.highlight .sx { + color: #d14; +} +.highlight .sr { + color: #009926; +} +.highlight .s1 { + color: #d14; +} +.highlight .ss { + color: #990073; +} +.highlight .bp { + color: #999; +} +.highlight .vc { + color: #008080; +} +.highlight .vg { + color: #008080; +} +.highlight .vi { + color: #008080; +} +.highlight .il { + color: #099; +} + +.nav_ul { + display: flex; + margin-left: 0px; + margin-bottom: 0px; + padding-left: 25px; + align-items: center; +} + +.nav-link.active { + font-weight: bold; +} + +.nav-link { + padding: 0 0.5rem; + vertical-align: bottom; +} + +@media (max-width: 575.98px) { + .nav { + padding-left: 10px; + } +} +.site-header { + padding: 10px 0; + margin-bottom: 30px; + font-family: "Montserrat", sans-serif; + float: bottom; +} + +.logo { + padding-left: 25px; + float: left; + font-size: 2rem; + color: #404040; + font-weight: bold; + font-family: "Raleway", sans-serif; +} + +a.logo { + text-decoration: none; + color: #404040; +} +a.logo :hover { + text-decoration: none !important; +} + +body, html { + height: 100%; +} + +.container { + font-family: "Montserrat", sans-serif; +} + +.container-home { + max-width: 900px; +} + +.jumbotron { + background-image: url("../images/background.jpg"); + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + background-color: #f9f9f9; + display: inline-block; + width: 100%; + height: 100%; + padding-top: 80px; + text-align: center; +} +.jumbotron .main-logo { + max-width: 300px; + padding-bottom: 20px; +} +.jumbotron .container { + background: rgb(255, 255, 255); + /*padding: 10%;*/ + padding: 3% 5%; + border-radius: 10px; +} + +.home-title-pad { + padding-bottom: 20px; +} + +.home-title { + text-align: center; + font-size: 2.5rem; + color: #2a7ae2; + font-weight: bold; + font-family: "Raleway", sans-serif; +} + +.description { + text-align: center; + margin-bottom: 50px; +} +.description p { + color: #424242; + font-family: "Roboto", sans-serif; + letter-spacing: normal; + font-size: 20px; + font-weight: 100; +} + +.links { + text-align: center; + margin-top: 50px; +} +.links a { + text-decoration: none; +} +.links .mdl-cell:hover h4, +.links .mdl-cell:active h4, +.links .mdl-cell:focus h4 { + color: #2a7ae2; +} +.links .mdl-cell:hover .icon > svg path, +.links .mdl-cell:active .icon > svg path, +.links .mdl-cell:focus .icon > svg path { + fill: #2a7ae2; +} +.links .icon > svg { + display: inline-block; + width: 64px; + height: 64px; + vertical-align: middle; +} +.links .icon > svg path { + fill: #424242; +} +.links h4 { + padding-top: 10px; + font-size: 20px; + font-weight: 300; +} + +h2 { + margin-top: 50px; +} + +.container-people { + max-width: 900px; +} + +.faculty img { + padding-bottom: 15px; +} +.faculty .faculty-name { + font-weight: 200; +} + +.current-students { + margin-bottom: 25px; +} + +.past-students { + margin-top: 25px; +} + +.student-image { + height: 250px; + object-fit: cover; +} + +.student { + margin: 25px 0; +} +.student .faculty-name { + font-weight: 200; +} +.student .student-name { + margin-top: 10px; + margin-bottom: 0px; +} + +.past-students .past-student-name { + margin-bottom: 0px; +} +.past-students .past-student-company { + font-style: italic; +} + +.paper { + margin: 5px 0; +} +.paper .paper-title { + font-weight: 200; + margin-bottom: 5px; +} +.paper .paper-authors { + margin-bottom: 0; +} +.paper .paper-conference { + color: #a8a8a8; + margin-bottom: 5px; +} +.paper .hide { + display: none; +} + +.year { + margin-top: 25px; +} + +.proj-background { + background-image: url("../images/background3.png"); +} + +.projects-title { + margin-top: 50px; +} + +.project { + margin: 25px 0; +} +.project .project-title { + font-weight: 200; +} +.project .project-image { + object-fit: cover; + max-height: 300px; + display: block; + margin-left: auto; + margin-right: auto; + padding: 20px; +} + +.news-date { + color: #a8a8a8; +} + +.news-images { + padding-bottom: 20px; + float: none; + margin: 0 auto; + text-align: center; +} + +.news-image { + object-fit: cover; + max-height: 450px; + padding: 10px 0px; +} + +.col-centered { + float: none; + margin: 0 auto; +} + +.news-description { + text-align: justify; +} + +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/css/main.css.map b/css/main.css.map new file mode 100644 index 0000000..c878486 --- /dev/null +++ b/css/main.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../_sass/_base.scss","main.scss","../_sass/_layout.scss","../_sass/_syntax-highlighting.scss","../_sass/_nav.scss","../_sass/_home.scss","../_sass/_people.scss","../_sass/_papers.scss","../_sass/_projects.scss","../_sass/_news.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;EAGI;EACA;;;AAKJ;AAAA;AAAA;AAGA;EACI;EACA,OCJe;EDKf,kBCJe;EDKf;EACA;EACA;EACA;EACA;EACA;;;AAKJ;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;EAII;;;AAKJ;AAAA;AAAA;AAGA;EACI;EACA;;;AAKJ;AAAA;AAAA;AAGA;EACI;;;AAGJ;EACI,WCnDe;;;ADwDnB;AAAA;AAAA;AAGA;EACI,aCzDe;;;AD6Df;AAAA;EAEK;;;AAMT;AAAA;AAAA;AAGA;EACI,aC7Ee;;;ADkFnB;AAAA;AAAA;AAGA;EACI,OC9Ee;ED+Ef;;AAEA;EACI;;AAGJ;EACI,OCxFW;EDyFX;;;AAMR;AAAA;AAAA;AAGA;EACI,OC/Fe;EDgGf;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAMR;AAAA;AAAA;AAGA;AAAA;EAEI;EACA;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;EACA;;;AAMR;AAAA;AAAA;AAGA;EACI;EACA;EACA;EACA;EACA,eCvJe;EDwJf,cCxJe;;AAmBf;ED+HJ;IAUQ;IACA;IACA;IACA;;;;AAMR;AAAA;AAAA;AAKI;EACI;EACA;EACA;;;AAMR;AAAA;AAAA;AAKI;EACI;EACA;EACA;EACA;;AAEA;EACI,MCzLO;;;AD8LnB;EACI;;;AAIJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;;;AE5NJ;AAAA;AAAA;AAGC;EACG;EACA;EACA;EAGA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEI,ODHW;;;ACOnB;EACI;EACA;;AAEA;EACI;;AAGJ;EACI,ODtBW;ECuBX,aD3BW;;AC8BX;EACI;;ADVR;ECJJ;IAmBQ;IACA;IACA;IACA,kBDlCW;ICmCX;IACA;IACA;;EAEA;IACI;IACA;IACA;IACA;IACA;IACA;IACA;;EAEA;IACI;IACA;;EAEA;IACI,MDhDD;;ECqDX;IACI;IACA;;EAGJ;IACI;IACA;;EAGJ;IACI;IACA;IAKA;;EAHA;IACI;;;;AAShB;AAAA;AAAA;AAGA;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;AAAA;EAEI;EACA;;;AAGJ;EACI;EACA,ODpGe;ECqGf;;;AAIJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AD9GA;ECkHA;AAAA;IAEI;IACA;;EAGJ;IACI;IACA;;;AD1HJ;EC+HA;IACI;IACA;IACA;;;AAMR;AAAA;AAAA;AAGA;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;AAEA;EACI,eD3KW;;;AC+KnB;EACI,WDnLe;ECoLf,OD3Ke;;;AC8KnB;EACI;EACA;;;AAKJ;AAAA;AAAA;AAGA;EACI,eD/Le;;;ACkMnB;EACI;EACA;EACA;;ADlLA;EC+KJ;IAMQ;;;;AAIR;EACI,eD7Me;;AC+Mf;EACI;;AD7LJ;EC4LA;IAIQ;;;AAIR;EACI;;ADrMJ;ECoMA;IAIQ;;;AAIR;EACI;;AD7MJ;EC4MA;IAIQ;;;;AC9OZ;AAAA;AAAA;AAGA;EACI;;AAGA;EACE;;AAGF;EAAS;EAAa;;AACtB;EAAS;EAAgB;;AACzB;EAAS;;AACT;EAAS;;AACT;EAAS;EAAa;;AACtB;EAAS;EAAa;;AACtB;EAAS;EAAa;;AACtB;EAAS;EAAa;EAAmB;;AACzC;EAAS;EAAa;;AACtB;EAAS;EAAa;;AACtB;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;EAAa;;AACtB;EAAS;EAAa;;AACtB;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;EAAa;;AACtB;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;EAAa;;AACtB;EAAS;;AACT;EAAS;;AACT;EAAS;EAAa;;AACtB;EAAS;EAAa;;AACtB;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;AACT;EAAS;;;AC1Db;EACI;EACA;EACA;EACA;EACA;;;AAUJ;EACI;;;AAKJ;EACI;EACA;;;AAIJ;EACI;IACI;;;AAOR;EACI;EACA;EACA;EACA;;;AAKJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACI;EACA;;AACA;EACI;;;ACtER;EACI;;;AAGJ;EAEI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAIJ;EACI;AACA;EAKA;EACA;;;AAKR;EACI;;;AAIJ;EACI;EACA;EACA,OJrCe;EIsCf;EACA;;;AAIJ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;;AAKR;EACI;EACA;;AAEA;EACI;;AAMA;AAAA;AAAA;EACI,OJrEO;;AI0EH;AAAA;AAAA;EACI,MJ3ED;;AIoFX;EACI;EACA;EACA;EACA;;AAEA;EACI,MJzFG;;AI+Ff;EACI;EACA;EACA;;;ACnHR;EACI;;;AAGJ;EACI;;;AASA;EACI;;AAGJ;EACI;;;AAMR;EACI;;;AAGJ;EACI;;;AAEJ;EACI;EACA;;;AAIJ;EAYI;;AATA;EACI;;AAGJ;EACI;EACA;;;AAOJ;EACI;;AAGJ;EACI;;;AC3DR;EAmBI;;AAlBA;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI,ONOW;EMNX;;AASJ;EACI;;;AAIR;EACI;;;AC3BJ;EACI;;;AAGJ;EACI;;;AAGJ;EAgBI;;AAfA;EACI;;AAGJ;EACI;EACA;EAEA;EACA;EACA;EAEA;;;ACrBR;EACI,ORiBe;;;AQdnB;EACI;EACA;EAAW;EAAc;;;AAG7B;EACI;EACA;EAMA;;;AAGJ;EACI;EACA;;;AAGJ;EACI","sourcesContent":["/**\n * Reset some basic elements\n */\nbody, h1, h2, h3, h4, h5, h6,\np, blockquote, pre, hr,\ndl, dd, ol, ul, figure {\n margin: 0;\n padding: 0;\n}\n\n\n\n/**\n * Basic styling\n */\nbody {\n font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;\n color: $text-color;\n background-color: $background-color;\n -webkit-text-size-adjust: 100%;\n -webkit-font-feature-settings: \"kern\" 1;\n -moz-font-feature-settings: \"kern\" 1;\n -o-font-feature-settings: \"kern\" 1;\n font-feature-settings: \"kern\" 1;\n font-kerning: normal;\n}\n\n\n\n/**\n * Set `margin-bottom` to maintain vertical rhythm\n */\nh1, h2, h3, h4, h5, h6,\np, blockquote, pre,\nul, ol, dl, figure,\n%vertical-rhythm {\n margin-bottom: calc($spacing-unit / 2);\n}\n\n\n\n/**\n * Images\n */\nimg {\n max-width: 100%;\n vertical-align: middle;\n}\n\n\n\n/**\n * Figures\n */\nfigure > img {\n display: block;\n}\n\nfigcaption {\n font-size: $small-font-size;\n}\n\n\n\n/**\n * Lists\n */\nul, ol {\n margin-left: $spacing-unit;\n}\n\nli {\n > ul,\n > ol {\n margin-bottom: 0;\n }\n}\n\n\n\n/**\n * Headings\n */\nh1, h2, h3, h4, h5, h6 {\n font-weight: $base-font-weight;\n}\n\n\n\n/**\n * Links\n */\na {\n color: $brand-color;\n text-decoration: none;\n\n &:visited {\n color: darken($brand-color, 15%);\n }\n\n &:hover {\n color: $text-color;\n text-decoration: underline;\n }\n}\n\n\n\n/**\n * Blockquotes\n */\nblockquote {\n color: $grey-color;\n border-left: 4px solid $grey-color-light;\n padding-left: calc($spacing-unit / 2);\n font-size: 18px;\n letter-spacing: -1px;\n font-style: italic;\n\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n\n\n/**\n * Code formatting\n */\npre,\ncode {\n font-size: 15px;\n border: 1px solid $grey-color-light;\n border-radius: 3px;\n background-color: #eef;\n}\n\ncode {\n padding: 1px 5px;\n}\n\npre {\n padding: 8px 12px;\n overflow-x: auto;\n\n > code {\n border: 0;\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n\n/**\n * Wrapper\n */\n.wrapper {\n max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));\n max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));\n margin-right: auto;\n margin-left: auto;\n padding-right: $spacing-unit;\n padding-left: $spacing-unit;\n @extend %clearfix;\n\n @include media-query($on-laptop) {\n max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));\n max-width: calc(#{$content-width} - (#{$spacing-unit}));\n padding-right: calc($spacing-unit / 2);\n padding-left: calc($spacing-unit / 2);\n }\n}\n\n\n\n/**\n * Clearfix\n */\n%clearfix {\n\n &:after {\n content: \"\";\n display: table;\n clear: both;\n }\n}\n\n\n\n/**\n * Icons\n */\n.icon {\n\n > svg {\n display: inline-block;\n width: 16px;\n height: 16px;\n vertical-align: middle;\n\n path {\n fill: $grey-color;\n }\n }\n}\n\n.banner_div {\n text-align: center\n}\n\n\nth, td {\n padding: 5pt;\n padding-left: 10pt;\n border-bottom: 1px solid black;\n}\n\nth {\n border-top: 2px solid black;\n border-bottom: 2px solid black;\n}","@charset \"utf-8\";\n\n\n\n// Our variables\n$base-font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n$base-font-size: 16px;\n$base-font-weight: 400;\n$small-font-size: $base-font-size * 0.875;\n$base-line-height: 1.5;\n\n$spacing-unit: 30px;\n\n$text-color: #111;\n$background-color: #fdfdfd;\n$brand-color: #2a7ae2;\n\n$grey-color: #424242;\n$grey-color-light: lighten($grey-color, 40%);\n$grey-color-dark: darken($grey-color, 25%);\n\n// Width of the content area\n$content-width: 1600px;\n\n$on-palm: 600px;\n$on-laptop: 800px;\n\n\n\n@mixin media-query($device) {\n @media screen and (max-width: $device) {\n @content;\n }\n}\n\n\n\n// Import partials from `sass_dir` (defaults to `_sass`)\n@import\n \"base\",\n \"layout\",\n \"syntax-highlighting\",\n \"nav\",\n \"home\",\n \"people\",\n \"papers\",\n \"projects\",\n \"news\"\n;\n","/**\n * Site header\n */\n .site-header {\n border-top: 5px solid $grey-color-dark;\n border-bottom: 1px solid $grey-color-light;\n min-height: 56px;\n\n // Positioning context for the mobile navigation icon\n position: relative;\n}\n\n.site-title {\n font-size: 26px;\n font-weight: 300;\n line-height: 56px;\n letter-spacing: -1px;\n margin-bottom: 0;\n float: left;\n\n &,\n &:visited {\n color: $grey-color-dark;\n }\n}\n\n.site-nav {\n float: right;\n line-height: 56px;\n\n .menu-icon {\n display: none;\n }\n\n .page-link {\n color: $text-color;\n line-height: $base-line-height;\n\n // Gaps between nav items, but not on the last one\n &:not(:last-child) {\n margin-right: 20px;\n }\n }\n\n @include media-query($on-palm) {\n position: absolute;\n top: 9px;\n right: calc($spacing-unit / 2);\n background-color: $background-color;\n border: 1px solid $grey-color-light;\n border-radius: 5px;\n text-align: right;\n\n .menu-icon {\n display: block;\n float: right;\n width: 36px;\n height: 26px;\n line-height: 0;\n padding-top: 10px;\n text-align: center;\n\n > svg {\n width: 18px;\n height: 15px;\n\n path {\n fill: $grey-color-dark;\n }\n }\n }\n\n .trigger {\n clear: both;\n display: none;\n }\n\n &:hover .trigger {\n display: block;\n padding-bottom: 5px;\n }\n\n .page-link {\n display: block;\n padding: 5px 10px;\n\n &:not(:last-child) {\n margin-right: 0;\n }\n margin-left: 20px;\n }\n }\n}\n\n\n\n/**\n * Site footer\n */\n.site-footer {\n border-top: 1px solid $grey-color-light;\n padding: $spacing-unit 0;\n}\n\n.footer-heading {\n font-size: 18px;\n margin-bottom: calc($spacing-unit / 2);\n}\n\n.contact-list,\n.social-media-list {\n list-style: none;\n margin-left: 0;\n}\n\n.footer-col-wrapper {\n font-size: 15px;\n color: $grey-color;\n margin-left: calc($spacing-unit / 2);\n @extend %clearfix;\n}\n\n.footer-col {\n float: left;\n margin-bottom: calc($spacing-unit / 2);\n padding-left: calc($spacing-unit / 2);\n}\n\n.footer-col-1 {\n width: -webkit-calc(35% - (#{$spacing-unit} / 2));\n width: calc(35% - (#{$spacing-unit} / 2));\n}\n\n.footer-col-2 {\n width: -webkit-calc(20% - (#{$spacing-unit} / 2));\n width: calc(20% - (#{$spacing-unit} / 2));\n}\n\n.footer-col-3 {\n width: -webkit-calc(45% - (#{$spacing-unit} / 2));\n width: calc(45% - (#{$spacing-unit} / 2));\n}\n\n@include media-query($on-laptop) {\n .footer-col-1,\n .footer-col-2 {\n width: -webkit-calc(50% - (#{$spacing-unit} / 2));\n width: calc(50% - (#{$spacing-unit} / 2));\n }\n\n .footer-col-3 {\n width: -webkit-calc(100% - (#{$spacing-unit} / 2));\n width: calc(100% - (#{$spacing-unit} / 2));\n }\n}\n\n@include media-query($on-palm) {\n .footer-col {\n float: none;\n width: -webkit-calc(100% - (#{$spacing-unit} / 2));\n width: calc(100% - (#{$spacing-unit} / 2));\n }\n}\n\n\n\n/**\n * Page content\n */\n.page-content {\n padding: $spacing-unit 0;\n}\n\n.page-heading {\n font-size: 20px;\n}\n\n.post-list {\n margin-left: 0;\n list-style: none;\n\n > li {\n margin-bottom: $spacing-unit;\n }\n}\n\n.post-meta {\n font-size: $small-font-size;\n color: $grey-color;\n}\n\n.post-link {\n display: block;\n font-size: 24px;\n}\n\n\n\n/**\n * Posts\n */\n.post-header {\n margin-bottom: $spacing-unit;\n}\n\n.post-title {\n font-size: 42px;\n letter-spacing: -1px;\n line-height: 1;\n\n @include media-query($on-laptop) {\n font-size: 36px;\n }\n}\n\n.post-content {\n margin-bottom: $spacing-unit;\n\n h2 {\n font-size: 32px;\n\n @include media-query($on-laptop) {\n font-size: 28px;\n }\n }\n\n h3 {\n font-size: 26px;\n\n @include media-query($on-laptop) {\n font-size: 22px;\n }\n }\n\n h4 {\n font-size: 20px;\n\n @include media-query($on-laptop) {\n font-size: 18px;\n }\n }\n}","/**\n * Syntax highlighting styles\n */\n.highlight {\n background: #fff;\n @extend %vertical-rhythm;\n\n .highlighter-rouge & {\n background: #eef;\n }\n\n .c { color: #998; font-style: italic } // Comment\n .err { color: #a61717; background-color: #e3d2d2 } // Error\n .k { font-weight: bold } // Keyword\n .o { font-weight: bold } // Operator\n .cm { color: #998; font-style: italic } // Comment.Multiline\n .cp { color: #999; font-weight: bold } // Comment.Preproc\n .c1 { color: #998; font-style: italic } // Comment.Single\n .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special\n .gd { color: #000; background-color: #fdd } // Generic.Deleted\n .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific\n .ge { font-style: italic } // Generic.Emph\n .gr { color: #a00 } // Generic.Error\n .gh { color: #999 } // Generic.Heading\n .gi { color: #000; background-color: #dfd } // Generic.Inserted\n .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific\n .go { color: #888 } // Generic.Output\n .gp { color: #555 } // Generic.Prompt\n .gs { font-weight: bold } // Generic.Strong\n .gu { color: #aaa } // Generic.Subheading\n .gt { color: #a00 } // Generic.Traceback\n .kc { font-weight: bold } // Keyword.Constant\n .kd { font-weight: bold } // Keyword.Declaration\n .kp { font-weight: bold } // Keyword.Pseudo\n .kr { font-weight: bold } // Keyword.Reserved\n .kt { color: #458; font-weight: bold } // Keyword.Type\n .m { color: #099 } // Literal.Number\n .s { color: #d14 } // Literal.String\n .na { color: #008080 } // Name.Attribute\n .nb { color: #0086B3 } // Name.Builtin\n .nc { color: #458; font-weight: bold } // Name.Class\n .no { color: #008080 } // Name.Constant\n .ni { color: #800080 } // Name.Entity\n .ne { color: #900; font-weight: bold } // Name.Exception\n .nf { color: #900; font-weight: bold } // Name.Function\n .nn { color: #555 } // Name.Namespace\n .nt { color: #000080 } // Name.Tag\n .nv { color: #008080 } // Name.Variable\n .ow { font-weight: bold } // Operator.Word\n .w { color: #bbb } // Text.Whitespace\n .mf { color: #099 } // Literal.Number.Float\n .mh { color: #099 } // Literal.Number.Hex\n .mi { color: #099 } // Literal.Number.Integer\n .mo { color: #099 } // Literal.Number.Oct\n .sb { color: #d14 } // Literal.String.Backtick\n .sc { color: #d14 } // Literal.String.Char\n .sd { color: #d14 } // Literal.String.Doc\n .s2 { color: #d14 } // Literal.String.Double\n .se { color: #d14 } // Literal.String.Escape\n .sh { color: #d14 } // Literal.String.Heredoc\n .si { color: #d14 } // Literal.String.Interpol\n .sx { color: #d14 } // Literal.String.Other\n .sr { color: #009926 } // Literal.String.Regex\n .s1 { color: #d14 } // Literal.String.Single\n .ss { color: #990073 } // Literal.String.Symbol\n .bp { color: #999 } // Name.Builtin.Pseudo\n .vc { color: #008080 } // Name.Variable.Class\n .vg { color: #008080 } // Name.Variable.Global\n .vi { color: #008080 } // Name.Variable.Instance\n .il { color: #099 } // Literal.Number.Integer.Long\n}\n","$logo_size: 100px;\n\n.nav {\n \n // vertical-align: bottom;\n // line-height: 10px;\n // height: 40px;\n // display:table\n // display:inline-block\n}\n\n.nav_ul {\n display: flex;\n margin-left: 0px;\n margin-bottom: 0px;\n padding-left: 25px;\n align-items: center\n \n // display: table-cell;\n // border:3px solid blue;\n // display: table-cell;\n // vertical-align: bottom;\n \n}\n\n\n.nav-link.active {\n font-weight: bold;\n}\n\n\n\n.nav-link {\n padding: 0 0.5rem;\n vertical-align: bottom;\n \n}\n\n@media (max-width: 575.98px) {\n .nav {\n padding-left: 10px;\n }\n\n \n}\n\n\n.site-header {\n padding: 10px 0;\n margin-bottom: 30px;\n font-family: 'Montserrat', sans-serif;\n float: bottom;\n}\n\n\n\n.logo {\n padding-left: 25px;\n float: left;\n font-size: 2rem;\n color: #404040;\n font-weight: bold;\n font-family: 'Raleway', sans-serif;\n}\n\n\na.logo {\n text-decoration: none; \n color: #404040;\n :hover {\n text-decoration: none !important;\n }\n}","body, html {\n height: 100%;\n}\n\n.container {\n // max-width: 1400px;\n font-family: 'Montserrat', sans-serif;\n}\n\n.container-home {\n max-width: 900px;\n}\n\n.jumbotron {\n background-image: url(\"../images/background.jpg\");\n background-position: center center;\n background-repeat: no-repeat;\n background-size: cover;\n background-color: #f9f9f9;\n display: inline-block;\n width: 100%;\n height: 100%;\n padding-top: 80px;\n text-align: center;\n \n .main-logo {\n max-width: 300px;\n padding-bottom: 20px;\n }\n\n\n .container {\n background: rgba(255, 255, 255, 1);\n /*padding: 10%;*/\n // padding-left: 5%;\n // padding-right: 5%;\n // padding-top: 5%;\n // padding-bottom: 2%;\n padding: 3% 5%;\n border-radius: 10px;\n // background: rgba(250, 250, 255, 0.97);\n }\n}\n\n.home-title-pad{\n padding-bottom: 20px;\n // opacity: 1;\n}\n\n.home-title {\n text-align: center;\n font-size: 2.5rem;\n color: $brand-color;\n font-weight: bold;\n font-family: 'Raleway', sans-serif;\n \n}\n\n.description {\n text-align: center;\n margin-bottom: 50px;\n\n p {\n color: #424242;\n font-family: 'Roboto', sans-serif;\n letter-spacing: normal;\n font-size: 20px;\n font-weight: 100;\n }\n}\n\n\n.links {\n text-align: center;\n margin-top: 50px;\n\n a {\n text-decoration: none;\n }\n\n .mdl-cell:hover,\n .mdl-cell:active,\n .mdl-cell:focus {\n h4 {\n color: $brand-color;\n }\n\n .icon {\n > svg {\n path {\n fill: $brand-color;\n }\n }\n }\n\n }\n\n .icon {\n\n > svg {\n display: inline-block;\n width: 64px;\n height: 64px;\n vertical-align: middle;\n\n path {\n fill: $grey-color;\n }\n }\n \n }\n\n h4 {\n padding-top: 10px;\n font-size: 20px;\n font-weight: 300;\n }\n}\n\n\n","h2 {\n margin-top: 50px;\n}\n\n.container-people {\n max-width: 900px;\n}\n\n\n.students-row {\n // max-height: 100px;\n}\n\n.faculty {\n img {\n padding-bottom: 15px;\n }\n\n .faculty-name {\n font-weight: 200;\n }\n\n \n}\n\n.current-students {\n margin-bottom: 25px;\n}\n\n.past-students {\n margin-top: 25px;\n}\n.student-image {\n height: 250px;\n object-fit: cover;\n // max-height: 450px;\n}\n\n.student {\n \n\n .faculty-name {\n font-weight: 200;\n }\n\n .student-name {\n margin-top: 10px;\n margin-bottom: 0px;\n }\n\n margin: 25px 0;\n}\n\n.past-students {\n .past-student-name {\n margin-bottom: 0px;\n }\n\n .past-student-company {\n font-style: italic;\n }\n}",".paper {\n .paper-title {\n font-weight: 200;\n margin-bottom: 5px;\n }\n\n .paper-authors {\n margin-bottom: 0;\n }\n\n .paper-conference {\n color: $grey-color-light;\n margin-bottom: 5px;\n }\n\n .paper-description {\n\n }\n\n margin: 5px 0;\n\n .hide {\n display: none;\n }\n}\n\n.year {\n margin-top: 25px;\n}",".proj-background {\n background-image: url(\"../images/background3.png\");\n}\n\n.projects-title {\n margin-top: 50px;\n}\n\n.project {\n .project-title {\n font-weight: 200;\n }\n\n .project-image {\n object-fit: cover;\n max-height: 300px;\n\n display: block;\n margin-left: auto;\n margin-right: auto;\n\n padding: 20px;\n }\n\n margin: 25px 0;\n}\n",".news-date {\n color: $grey-color-light;\n}\n\n.news-images {\n padding-bottom: 20px;\n float:none;margin:0 auto;text-align:center\n}\n\n.news-image {\n object-fit: cover;\n max-height: 450px;\n \n // display: block;\n // margin-left: auto;\n // margin-right: 0;\n\n padding: 10px 0px;\n}\n\n.col-centered{\n float: none;\n margin: 0 auto;\n}\n\n.news-description{\n text-align: justify;\n}"],"file":"main.css"} \ No newline at end of file diff --git a/delete_old_student_images.py b/delete_old_student_images.py new file mode 100644 index 0000000..5d97975 --- /dev/null +++ b/delete_old_student_images.py @@ -0,0 +1,21 @@ +from pathlib import Path +import yaml + +ROOT_PATH = Path(__file__).resolve().parent +STUDENTS_YML = ROOT_PATH / "_data" / "students.yaml" + + +def main(): + student_photos_path = ROOT_PATH / "images" / "students" + + with open(STUDENTS_YML) as f: + students = yaml.safe_load(f) + images = [p["image"] for t in students for p in students[t]] + + for student_photo_path in student_photos_path.iterdir(): + if student_photo_path.name not in images: + student_photo_path.unlink() + + +if __name__ == "__main__": + main() diff --git a/images/Goeders.jpg b/images/Goeders.jpg new file mode 100644 index 0000000..3ce600d Binary files /dev/null and b/images/Goeders.jpg differ diff --git a/images/Hutchings.jpg b/images/Hutchings.jpg new file mode 100644 index 0000000..e589a69 Binary files /dev/null and b/images/Hutchings.jpg differ diff --git a/images/Nelson.jpg b/images/Nelson.jpg new file mode 100644 index 0000000..f13ca8a Binary files /dev/null and b/images/Nelson.jpg differ diff --git a/images/Ross_Daniel.jpg b/images/Ross_Daniel.jpg new file mode 100644 index 0000000..e9b347f Binary files /dev/null and b/images/Ross_Daniel.jpg differ diff --git a/images/Wirthlin.jpg b/images/Wirthlin.jpg new file mode 100644 index 0000000..4bbf00e Binary files /dev/null and b/images/Wirthlin.jpg differ diff --git a/images/background.jpg b/images/background.jpg new file mode 100644 index 0000000..3e9aa42 Binary files /dev/null and b/images/background.jpg differ diff --git a/images/background.png b/images/background.png new file mode 100644 index 0000000..f3b8daf Binary files /dev/null and b/images/background.png differ diff --git a/images/background2.jpg b/images/background2.jpg new file mode 100644 index 0000000..bd0b236 Binary files /dev/null and b/images/background2.jpg differ diff --git a/images/background3.png b/images/background3.png new file mode 100644 index 0000000..b83a2e0 Binary files /dev/null and b/images/background3.png differ diff --git a/images/banner_board.jpeg b/images/banner_board.jpeg new file mode 100644 index 0000000..02d14ad Binary files /dev/null and b/images/banner_board.jpeg differ diff --git a/images/news_2019/FPT2018_1.jpg b/images/news_2019/FPT2018_1.jpg new file mode 100644 index 0000000..45deb35 Binary files /dev/null and b/images/news_2019/FPT2018_1.jpg differ diff --git a/images/news_2019/FPT2018_2.jpg b/images/news_2019/FPT2018_2.jpg new file mode 100644 index 0000000..fe17db9 Binary files /dev/null and b/images/news_2019/FPT2018_2.jpg differ diff --git a/images/news_2019/FPT2019_1.jpg b/images/news_2019/FPT2019_1.jpg new file mode 100644 index 0000000..3b04cc8 Binary files /dev/null and b/images/news_2019/FPT2019_1.jpg differ diff --git a/images/news_2019/FPT2019_2.jpg b/images/news_2019/FPT2019_2.jpg new file mode 100644 index 0000000..d9d911a Binary files /dev/null and b/images/news_2019/FPT2019_2.jpg differ diff --git a/images/news_2019/chipir1.jpg b/images/news_2019/chipir1.jpg new file mode 100644 index 0000000..3031fc9 Binary files /dev/null and b/images/news_2019/chipir1.jpg differ diff --git a/images/news_2019/chipir2.jpg b/images/news_2019/chipir2.jpg new file mode 100644 index 0000000..ef544bd Binary files /dev/null and b/images/news_2019/chipir2.jpg differ diff --git a/images/news_2019/chipir3.jpg b/images/news_2019/chipir3.jpg new file mode 100644 index 0000000..37fbd20 Binary files /dev/null and b/images/news_2019/chipir3.jpg differ diff --git a/images/news_2019/lansce1.jpg b/images/news_2019/lansce1.jpg new file mode 100755 index 0000000..9681bef Binary files /dev/null and b/images/news_2019/lansce1.jpg differ diff --git a/images/news_2019/lansce2.jpg b/images/news_2019/lansce2.jpg new file mode 100755 index 0000000..d7373cc Binary files /dev/null and b/images/news_2019/lansce2.jpg differ diff --git a/images/news_2019/lansce3.jpg b/images/news_2019/lansce3.jpg new file mode 100755 index 0000000..7239bcc Binary files /dev/null and b/images/news_2019/lansce3.jpg differ diff --git a/images/news_2020/fpl2020_1.jpg b/images/news_2020/fpl2020_1.jpg new file mode 100755 index 0000000..7b78bb0 Binary files /dev/null and b/images/news_2020/fpl2020_1.jpg differ diff --git a/images/news_2021/andrew_keller.jpg b/images/news_2021/andrew_keller.jpg new file mode 100644 index 0000000..942f924 Binary files /dev/null and b/images/news_2021/andrew_keller.jpg differ diff --git a/images/news_2021/ccl_bbq1.JPG b/images/news_2021/ccl_bbq1.JPG new file mode 100644 index 0000000..88d6b54 Binary files /dev/null and b/images/news_2021/ccl_bbq1.JPG differ diff --git a/images/news_2021/ccl_bbq2.JPG b/images/news_2021/ccl_bbq2.JPG new file mode 100644 index 0000000..0b5c7ab Binary files /dev/null and b/images/news_2021/ccl_bbq2.JPG differ diff --git a/images/news_2021/lansce_boards.jpg b/images/news_2021/lansce_boards.jpg new file mode 100644 index 0000000..2549f3d Binary files /dev/null and b/images/news_2021/lansce_boards.jpg differ diff --git a/images/news_2021/lansce_sign.jpg b/images/news_2021/lansce_sign.jpg new file mode 100644 index 0000000..eba3a0f Binary files /dev/null and b/images/news_2021/lansce_sign.jpg differ diff --git a/images/news_2022/fpt_hk.jpg b/images/news_2022/fpt_hk.jpg new file mode 100644 index 0000000..e11e8a2 Binary files /dev/null and b/images/news_2022/fpt_hk.jpg differ diff --git a/images/news_2022/fpt_slide_0.png b/images/news_2022/fpt_slide_0.png new file mode 100644 index 0000000..8bd46d7 Binary files /dev/null and b/images/news_2022/fpt_slide_0.png differ diff --git a/images/news_2022/fpt_slide_1.png b/images/news_2022/fpt_slide_1.png new file mode 100644 index 0000000..38c863f Binary files /dev/null and b/images/news_2022/fpt_slide_1.png differ diff --git a/images/news_2022/lansce_experiments.jpg b/images/news_2022/lansce_experiments.jpg new file mode 100644 index 0000000..5b32c19 Binary files /dev/null and b/images/news_2022/lansce_experiments.jpg differ diff --git a/images/news_2022/lansce_researchers.jpg b/images/news_2022/lansce_researchers.jpg new file mode 100644 index 0000000..d91668b Binary files /dev/null and b/images/news_2022/lansce_researchers.jpg differ diff --git a/images/news_2022/lmtf_a.jpg b/images/news_2022/lmtf_a.jpg new file mode 100755 index 0000000..5c8071e Binary files /dev/null and b/images/news_2022/lmtf_a.jpg differ diff --git a/images/news_2022/lmtf_b.jpg b/images/news_2022/lmtf_b.jpg new file mode 100755 index 0000000..ec49715 Binary files /dev/null and b/images/news_2022/lmtf_b.jpg differ diff --git a/images/news_2023/FPT2023.jpg b/images/news_2023/FPT2023.jpg new file mode 100755 index 0000000..e44276d Binary files /dev/null and b/images/news_2023/FPT2023.jpg differ diff --git a/images/news_2023/YokohamaNoodles2023.jpg b/images/news_2023/YokohamaNoodles2023.jpg new file mode 100755 index 0000000..312465b Binary files /dev/null and b/images/news_2023/YokohamaNoodles2023.jpg differ diff --git a/images/news_2023/chipir_setup.jpeg b/images/news_2023/chipir_setup.jpeg new file mode 100644 index 0000000..cee5608 Binary files /dev/null and b/images/news_2023/chipir_setup.jpeg differ diff --git a/images/news_2023/chipir_weston.jpeg b/images/news_2023/chipir_weston.jpeg new file mode 100644 index 0000000..7a1dd6c Binary files /dev/null and b/images/news_2023/chipir_weston.jpeg differ diff --git a/images/news_2023/dac_logo.png b/images/news_2023/dac_logo.png new file mode 100644 index 0000000..5b4a05b Binary files /dev/null and b/images/news_2023/dac_logo.png differ diff --git a/images/news_2023/fpga_andy.jpg b/images/news_2023/fpga_andy.jpg new file mode 100644 index 0000000..d135e23 Binary files /dev/null and b/images/news_2023/fpga_andy.jpg differ diff --git a/images/news_2023/fpl1.jpg b/images/news_2023/fpl1.jpg new file mode 100644 index 0000000..c77c80d Binary files /dev/null and b/images/news_2023/fpl1.jpg differ diff --git a/images/news_2023/fpl2.jpg b/images/news_2023/fpl2.jpg new file mode 100644 index 0000000..cefb67e Binary files /dev/null and b/images/news_2023/fpl2.jpg differ diff --git a/images/news_2023/fpl3.jpg b/images/news_2023/fpl3.jpg new file mode 100644 index 0000000..8aaff27 Binary files /dev/null and b/images/news_2023/fpl3.jpg differ diff --git a/images/news_2023/kria.png b/images/news_2023/kria.png new file mode 100644 index 0000000..103dbef Binary files /dev/null and b/images/news_2023/kria.png differ diff --git a/images/news_2023/lbnl_sep2023.jpg b/images/news_2023/lbnl_sep2023.jpg new file mode 100644 index 0000000..d35ef42 Binary files /dev/null and b/images/news_2023/lbnl_sep2023.jpg differ diff --git a/images/news_2023/object_detection_example.jfif b/images/news_2023/object_detection_example.jfif new file mode 100644 index 0000000..bd1ff6c Binary files /dev/null and b/images/news_2023/object_detection_example.jfif differ diff --git a/images/news_2023/radecs2023_1.jpg b/images/news_2023/radecs2023_1.jpg new file mode 100644 index 0000000..6f81fbc Binary files /dev/null and b/images/news_2023/radecs2023_1.jpg differ diff --git a/images/news_2023/radecs2023_2.jpg b/images/news_2023/radecs2023_2.jpg new file mode 100644 index 0000000..032a8b6 Binary files /dev/null and b/images/news_2023/radecs2023_2.jpg differ diff --git a/images/news_2023/radecs2023_3.jpg b/images/news_2023/radecs2023_3.jpg new file mode 100644 index 0000000..336e97e Binary files /dev/null and b/images/news_2023/radecs2023_3.jpg differ diff --git a/images/news_2023/sccm.jpg b/images/news_2023/sccm.jpg new file mode 100644 index 0000000..93ca860 Binary files /dev/null and b/images/news_2023/sccm.jpg differ diff --git a/images/news_2024/fccm.jpg b/images/news_2024/fccm.jpg new file mode 100644 index 0000000..dbd17d1 Binary files /dev/null and b/images/news_2024/fccm.jpg differ diff --git a/images/news_2024/fccm_2024_goeders.png b/images/news_2024/fccm_2024_goeders.png new file mode 100644 index 0000000..0f044b1 Binary files /dev/null and b/images/news_2024/fccm_2024_goeders.png differ diff --git a/images/news_2024/harris1.jpg b/images/news_2024/harris1.jpg new file mode 100644 index 0000000..181a098 Binary files /dev/null and b/images/news_2024/harris1.jpg differ diff --git a/images/news_2024/harris2.jpg b/images/news_2024/harris2.jpg new file mode 100644 index 0000000..4f5d122 Binary files /dev/null and b/images/news_2024/harris2.jpg differ diff --git a/images/news_2024/lmtf1.JPG b/images/news_2024/lmtf1.JPG new file mode 100644 index 0000000..147ef41 Binary files /dev/null and b/images/news_2024/lmtf1.JPG differ diff --git a/images/news_2024/lmtf2.JPG b/images/news_2024/lmtf2.JPG new file mode 100644 index 0000000..4568b63 Binary files /dev/null and b/images/news_2024/lmtf2.JPG differ diff --git a/images/news_2024/lmtf3.JPG b/images/news_2024/lmtf3.JPG new file mode 100644 index 0000000..4859a13 Binary files /dev/null and b/images/news_2024/lmtf3.JPG differ diff --git a/images/news_2024/saw2024_1.jpeg b/images/news_2024/saw2024_1.jpeg new file mode 100644 index 0000000..c362809 Binary files /dev/null and b/images/news_2024/saw2024_1.jpeg differ diff --git a/images/news_2024/saw2024_2.jpeg b/images/news_2024/saw2024_2.jpeg new file mode 100644 index 0000000..3f53408 Binary files /dev/null and b/images/news_2024/saw2024_2.jpeg differ diff --git a/images/no-image.jpg b/images/no-image.jpg new file mode 100644 index 0000000..1239806 Binary files /dev/null and b/images/no-image.jpg differ diff --git a/images/projects/short_circuit_diagram.png b/images/projects/short_circuit_diagram.png new file mode 100755 index 0000000..6449990 Binary files /dev/null and b/images/projects/short_circuit_diagram.png differ diff --git a/images/students/Caden_Brinkman.jpg b/images/students/Caden_Brinkman.jpg new file mode 100644 index 0000000..a015056 Binary files /dev/null and b/images/students/Caden_Brinkman.jpg differ diff --git a/images/students/Caleb_Price.jpg b/images/students/Caleb_Price.jpg new file mode 100644 index 0000000..459646f Binary files /dev/null and b/images/students/Caleb_Price.jpg differ diff --git a/images/students/Dallin_Dahl.jpg b/images/students/Dallin_Dahl.jpg new file mode 100644 index 0000000..36ac253 Binary files /dev/null and b/images/students/Dallin_Dahl.jpg differ diff --git a/images/students/Weston_smith.jpg b/images/students/Weston_smith.jpg new file mode 100644 index 0000000..b732683 Binary files /dev/null and b/images/students/Weston_smith.jpg differ diff --git a/images/students/andrew_wilson.jpg b/images/students/andrew_wilson.jpg new file mode 100644 index 0000000..adfd05d Binary files /dev/null and b/images/students/andrew_wilson.jpg differ diff --git a/images/students/blaine_freestone.jpg b/images/students/blaine_freestone.jpg new file mode 100644 index 0000000..6d3abba Binary files /dev/null and b/images/students/blaine_freestone.jpg differ diff --git a/images/students/cameron_samson.jpg b/images/students/cameron_samson.jpg new file mode 100644 index 0000000..02ee987 Binary files /dev/null and b/images/students/cameron_samson.jpg differ diff --git a/images/students/carson_bush.jpg b/images/students/carson_bush.jpg new file mode 100644 index 0000000..6e7d301 Binary files /dev/null and b/images/students/carson_bush.jpg differ diff --git a/images/students/collin_lambert.jpg b/images/students/collin_lambert.jpg new file mode 100644 index 0000000..8f4e637 Binary files /dev/null and b/images/students/collin_lambert.jpg differ diff --git a/images/students/colton_yates.jpg b/images/students/colton_yates.jpg new file mode 100644 index 0000000..2fd7f96 Binary files /dev/null and b/images/students/colton_yates.jpg differ diff --git a/images/students/ethan_durrant.jpg b/images/students/ethan_durrant.jpg new file mode 100644 index 0000000..2de7f5e Binary files /dev/null and b/images/students/ethan_durrant.jpg differ diff --git a/images/students/ethan_hunter.jpg b/images/students/ethan_hunter.jpg new file mode 100644 index 0000000..2f61784 Binary files /dev/null and b/images/students/ethan_hunter.jpg differ diff --git a/images/students/garrett_smith.jpg b/images/students/garrett_smith.jpg new file mode 100644 index 0000000..c708355 Binary files /dev/null and b/images/students/garrett_smith.jpg differ diff --git a/images/students/hayden_cook.png b/images/students/hayden_cook.png new file mode 100755 index 0000000..2f177f3 Binary files /dev/null and b/images/students/hayden_cook.png differ diff --git a/images/students/isaac_gubelin.jpg b/images/students/isaac_gubelin.jpg new file mode 100644 index 0000000..14b0b47 Binary files /dev/null and b/images/students/isaac_gubelin.jpg differ diff --git a/images/students/jacob_brown.jpg b/images/students/jacob_brown.jpg new file mode 100644 index 0000000..bf4209b Binary files /dev/null and b/images/students/jacob_brown.jpg differ diff --git a/images/students/jonathan_thompson.jpg b/images/students/jonathan_thompson.jpg new file mode 100644 index 0000000..fd7b843 Binary files /dev/null and b/images/students/jonathan_thompson.jpg differ diff --git a/images/students/joshua_fife.jpg b/images/students/joshua_fife.jpg new file mode 100644 index 0000000..6555335 Binary files /dev/null and b/images/students/joshua_fife.jpg differ diff --git a/images/students/keenan_faulkner.jpg b/images/students/keenan_faulkner.jpg new file mode 100644 index 0000000..6f306fc Binary files /dev/null and b/images/students/keenan_faulkner.jpg differ diff --git a/images/students/lilly_mackenzie.jpg b/images/students/lilly_mackenzie.jpg new file mode 100644 index 0000000..bef2dd5 Binary files /dev/null and b/images/students/lilly_mackenzie.jpg differ diff --git a/images/students/nathan_baker.jpg b/images/students/nathan_baker.jpg new file mode 100644 index 0000000..7486a48 Binary files /dev/null and b/images/students/nathan_baker.jpg differ diff --git a/images/students/nathan_harris.jpg b/images/students/nathan_harris.jpg new file mode 100644 index 0000000..d371003 Binary files /dev/null and b/images/students/nathan_harris.jpg differ diff --git a/images/students/reilly_mckendrick.jpg b/images/students/reilly_mckendrick.jpg new file mode 100644 index 0000000..86d4739 Binary files /dev/null and b/images/students/reilly_mckendrick.jpg differ diff --git a/images/students/tyler_ricks.jpg b/images/students/tyler_ricks.jpg new file mode 100644 index 0000000..9f5e7f9 Binary files /dev/null and b/images/students/tyler_ricks.jpg differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..845086d --- /dev/null +++ b/index.html @@ -0,0 +1,124 @@ + + + +
+ + + + +The configurable computing lab focuses on FPGAs and FPGA-like devices, researching new tools and techniques for reliability, security, debug, high-level synthesis, open-source CAD, and hardware accelerated applications. +
+Professor Jeff Goeders traveled to Orlando, Florida, to attend the 2024 International Symposium On Field-Programmable Custom Computing Machines (FCCM). He presented Daniel Hutchings’ Master’s work, “Toward FPGA Intellectual Property (IP) Encryption from Netlist to Bitstream”. This work was published in the ACM TRETS journal, and describes a novel method to encrypt FPGA IP through the CAD flow and into the bitstream.
+ +Undergraduate researcher Dallin Wood, traveled along with Professors Wirthin and Goeders, to the Little Mountain Test Facility in Ogden, Utah to use the LINAC for computer reliability testing. The research project studied how a simply microcontroller (attiny85) would respond to radiation.
+ +Professor Goeders attend the 2024 Hardware Reverse Engineering Workshop (HARRIS 2024), hosted by Ruhr University in Bochum, Germany. He gave a talk titled, “Leveraging FPGA Reverse Engineering for Secure CAD Flows,” that discussed how recent tools in the FPGA open-source community can be leveraged for good, improving the security of FPGA CAD flows.
+ +Professor Wirthlin and Goeders travel with six students to report on 2023 activities and propose projects for 2024 for the NSF SHREC center.
+ +Reilly McKendrick (PhD student) and Professor Jeff Goeders traveled to Yokohama, Japan to attend the International Conference on Field-Programmable Technology. Reilly presented the paper “Assuring Netlist-to-Bitstream Equivalence using Physical Netlist Generation and Structural Comparison”, co-authored by himself, Professor Goeders, and Keenan Faulkner.
+ +Professor Jeff Goeders traveled to Toulouse, France to present at the 2023 RADECS conference. The poster was titled, “The Effects of Gamma Ray Dose on Dynamic Operation of a Commercial FRAM Device”, co-authored by BYU students Wesley Stirk and Nathan Harris, and Professor Mike Wirthlin.
+ +Hayden Cook traveled to Gothenburg, Sweden to attend the 2023 International Conference on Field-Programmable Logic and Applications (FPL). While there, Hayden presented a poster on his short paper, “Improving the Reliability of FPGA CRO PUFs”, co-authored by BYU student Zephraim Tripp and Professor Brad Hutchings and Jeffrey Goeders.
+ +During the week of August 28-September 1st, Michael Bjerregaard and Garrett Smith had the opportunity to participate in a radiation test at the Lawrence Berkeley National Laboratory (LBNL). They attended to support a test of the Versal DUT card created by the Xilinx Radiation Test Consortium and to validate the function of the BYU JTAG configuration module (JCM). They were able to help finish setting up to power cabling for the Versal DUT card and place it in the beam. The system performed successfully and we were able to scrub configuration upsets in the Versal part while logging both the upsets and the statuses reported from the part itself. Although there were a number of setbacks, during the setup and test run, the experiment successfully collected programmable logic CRAM upsets at a high rate and determined cross section measurements. The BYU team is looking forward to testing again with more complex designs and more stringent testing conditions.
+ +Professor Jeff Goeders organized the 2023 DAC System Design Contest, where teams competed to perform fast and accurate image recognition on an embedded FPGA or GPU platform. The contest was sponsored by AMD, and held in conjunction with the 2023 Design Automation Conference (DAC), which was held in San Francisco, California. Professor Goeders held a special session at DAC where the winning teams presented their design solutions.
+ +Undergraudate Weston Smith, along with Professor Mike Wirthlin, traveled to the ChipIr Beamline at the ISIS Neutron and Muon source at the Rutherford Appleton Laboratory, UK, to verify the reliability of various computer reliability methodologies. The experiments performed at ChipIr were testing methodologies for multicore SoC (System-on-a-Chip), various DRAM devices, a TMR RISCV processsor and Linux on a MPSOC. The image on the left are the experiments in the testing environment and the image on the right is Weston Smith setting up the experiment.
+ +PhD students Andrew Wilson and Hayden Cook, along with Professor Jeff Goeders, attended the 2023 International Symposium on Field-Programmable Gate Arrays (FPGA) and Workshop on Security for Custom Computing Machines (SCCM). Andrew presented his paper, “Post-Radiation Fault Analysis of a High Reliability FPGA Linux SoC”, co-authored by BYU students Nate Baker, Ethan Campbell, and Jackson Sahleen and Professor Mike Wirthlin. Professor Goeders co-organized the SCCM workshop, where Hayden gave a presentation titled “Cloning the Unclonable: Physically Cloning an FPGA RO PUF”.
+ +Researchers from the CCL traveled to the Los Alamos Neutron Science Center (LANSCE) to verify the reliability of various computer reliability methodologies. The experiments performed at LANSCE were a testing methodologies for multicore SoC (System-on-a-Chip), an improved Linux PCAP scrubber, radiation hardened softcore processors, a DDR memory module and attempting to generate bit upsets data for FRAM chips continually performing reads and writes. The image on the left are the experiments exposed to the neutron radiation beam and on the right are researchers involved.
+ +PhD student Hayden Cook, along with Professor Jeff Goeders, virtually attended the 2022 IEEE International Conference on Field-Programmable Technology (FPT) (FPT). Hayden presented his paper, “Cloning the Unclonable: Physically Cloning an FPGA Ring-Oscillator PUF”, co-authored by BYU students Jonathan Thompson and Zephram Tripp and professor Jeffrey Goeders as well as retired professor Brad Hutchings. This paper ended up winning FPT’s best paper award.
+ +Researchers from the CCL and Sandia National Laboratory traveled to the Little Mountain Test Facility in Ogden, Utah to use the LINAC for computer reliability testing. An SRAM chip (a commonly used component in bigger devices) was irradiated at varying intensities and durations to characterize its response. The people in the image on the left are (from left to right) Dolores Black (SNL), Jeff Black (SNL), Wesley Stirk (CCL), Roy Cuoco (SNL), Mike Wirthlin (CCL), and Jeff Goeders (CCL).
+ +Andrew Keller successfully defended his PhD dissertation, “Partial Circuit Replication for Masking and Detecting Soft Errors in SRAM-Based FPGAs”. Andrew is now starting a full-time job at L3Harris in Salt Lake City.
+ +Students, faculty, and their spouses, got together for a party to celebrate the end of a successful summer of research. Lots of fun was had chatting and getting to know each other with plenty of cheeseburgers, snacks and ice cream.
+ +Students from the CCL traveled to the Los Alamos Neutron Science Center (LANSCE) to perform a variety of experiments related to computer reliability. Experiments included testing of a Linux-based PCAP scrubber, radiation hardened softcore processors, SoC (System-on-a-Chip) radiation testing methodologies, and FPGA fabric characterization under radiation. The image on the left shows the experiment boards lined up for the neutron radiation beam. The image on the right shows the participating students on the first day of the experiments (and the first day of school).
+ +Hayden Cook (Master’s student) gave a remote presentation at the 30th International Conference on Field-Programmable Logic and Applications on “Using Novel Configuration Techniques for Accelerated FPGA Aging”.
+ +Matthew Ashcraft (PhD student) travelled to Tianjin, China to present his paper at the 2019 International Conference on Field-Programmable Technology on “Synchronizing On-Chip Software and Hardware Traces for HLS-Accelerated Programs,” building on the work presented at the previous years conference.
+ +Students journeyed to ChipIr equipt with several experiments and a desire to discover the unknown. Like LANSCE, ChipIr also provides an accelerated neutron source that is similar to neutron radiation found in the Earth’s atmosphere. A half dozen different boards were included in this test. Experiments covered novel scrubber techniques, structrual redundancy on a RISC-V processor, multi-cell upset detection on the newer FPGA architectures, the use of the Soft Error Mitigation (SEM) Core, and the use of partial circuit replication techniques on academic and commercial FPGA-based networking applications. Experiments were staffed around the clock; students back at BYU remoted into the experiments while those attending prepaired for the next day. A breif visit was made to the nearby historic town of Abingdon for dinner one eveing, and Oxford 1st ward was attended on Sunday, the second to last day.
+ +Date | +Topic (Speakers) | +Topic (Speakers) | +
---|---|---|
Jan 11 | +First week of school | ++ |
Jan 18 | +SHREC Workshop | ++ |
Jan 25 | +Sam Van Denberghe (PCI scrubbing) | ++ |
Feb 1 | +Reilly McKendrick (Phys Netlist) | ++ |
Feb 8 | +Colton Yates (Digital Colabs) | +Caleb Price (ARM DAP) | +
Feb 15 | +Hayden Cook (AMD Internship) | +N/A | +
Feb 22 | +Reilly McKendrick (Phys Netlist) | +Hayden Continue | +
Feb 29 | +Dallin Wood (Test Vector System) | +Caleb Price (Virtual Server Overview) | +
Mar 7 | +Colton Yates (CS 111 Chatbot) | +Joshua Fifie (local GPT), Mike Wirthlin (Tutor ChatBots) | +
Mar 14 | +PolarFire overview (Sam and Weston?) | +Versal AI engines and updates | +
Mar 21 | +Cancelled | ++ |
Mar 28 | +Cancelled | +(LMTF) | +
Apr 4 | +LMTF, PCI Fundamentals (Andy and Sam) | ++ |
Apr 11 | +DDR Restuls (Rami and Tyler) | ++ |
Apr 18 | +Lab Party? | ++ |
Ideas:
+Date | +Topic (Speakers) | +Topic (Speakers) | +
---|---|---|
Sep 7 | +Welcome Back! | ++ |
Sep 21 | +Joshua Fife (VPR) | ++ |
Sep 28 | +Nathan Harris (FRAM) / Weston Smith (SoC) | ++ |
Oct 5 | +Reilly McKendrick (Phys Netlist) | ++ |
Oct 12 | +Ethan Durrant / Zack Driskill (AIE) | ++ |
Oct 19 | +Tyler Ricks / Rami Arafeh (DDR testing) | ++ |
Oct 26 | +No meeting | ++ |
Nov 2 | +Dallin Dahl (IP matching) | ++ |
Nov 16 | +Nathan Baker (Fault injection) | ++ |
Nov 23 | +No meeting - thanksgiving | ++ |
Nov 30 | +Hayden Cook / Jonathan Thompson (FPGA Aging) | ++ |
Dec 7 | +Collin Lambert (HBM Warmup) | ++ |
Dec 14 | +No meeting | ++ |
Dec 15 | +Lab Party | ++ |
Rescheduled:
+Date | +Topic (Speakers) | +Topic (Speakers) | +
---|---|---|
Feb 2 | +FPT Papers (Grad students) | ++ |
Feb 9 | +FPGA Dry Run (Andy Wilson) | +LANSCE summary (SHREC/DTRA Students) | +
Feb 16 | +FPT Papers (Grad students) | ++ |
Feb 23 | +Colab Digital design (Jared, Weston & Zack) | +HBM memories | +
Mar 2 | +FPGA Papers (Grad students) | ++ |
Mar 9 | +IP Matching (Reilly/Dallin) | ++ |
Mar 16 | +DTRA LANSCE results (Wesley/Nathan) | ++ |
Mar 23 | +Versal NOC (Wirthlin) | +Python packages (Goeders) | +
Mar 30 | +Post-radiation fault injection (Nathan) | ++ |
Apr 6 | ++ | + |
Apr 13 | ++ | + |
Apr 20 | +Lab Party (TBD) | ++ |
Other ideas:
+Date | +Research Talk Speaker (20 min) | +Topic | +Tech Talk Speaker (20 min) | +Topic | +
---|---|---|---|---|
Sep 1 | +Hayden Cook | +Cloning RO Pufs | ++ | + |
Sep 8 | +Andy Wilson | +Google Co-labs and examples | ++ | + |
Sep 15 | +Wes Stirk | +LMTF Radiation tests | ++ | + |
Sep 22 | +Dr. Wirthlin / Michael / Garrett | +XRTC Presentations - Versal Scrubbing | ++ | + |
Sep 29 | +Ethan/Jackson | +BFAT | ++ | + |
Oct 6 | +NO MEETING | ++ | + | + |
Oct 13 | +Daniel Hutchings | +Encrypted IP | ++ | + |
Oct 20 | +Dr. Wirthlin | +MiGen Overview | ++ | + |
Oct 27 | +Julia / Nathan | +X-Ray, Doom on RISC-V | ++ | + |
Nov 3 | +Dr. Wirthlin | +MiGen / Litex | ++ | + |
Nov 10 | +FPL Papers | ++ | + | + |
Nov 17 | +FPL Papers | ++ | + | + |
Nov 24 | +Thanksgiving - no meeting | ++ | + | + |
Dec 1 | +FPT Dry runs | ++ | + | + |
Dec 8 | +No Meeting (party next day) | ++ | + | + |
Dec 9 | +Reading day Party | ++ | + | + |
Ideas:
+Date | +Research Talk Speaker (20 min) | +Topic | +Tech Talk Speaker (20 min) | +Topic | +
---|---|---|---|---|
Jan 6 | +Hayden Cook | +FPGA Watermarking | ++ | + |
Jan 13 | +SHREC Presentations | ++ | Lab visits from Undergrads | ++ |
Jan 20 | +SHREC Workshop | ++ | Lab visits from Undergrads | ++ |
Jan 27 | +Wesley Stirk, Evan Poff | +DTRA Data | +Josh | +Valgrind, GDB | +
Feb 3 | +Andy, Garrett, Jackson Sa. | +RISC-V Failure Analysis | +Jeff Goeders | +Profiling | +
Feb 10 | +Mike Wirthlin | +MRQW Presentation | ++ | + |
Feb 17 | +Daniel Hutchings | +IP Encryption | +Dallin Dahl | +Vivado + Makefiles | +
Feb 24 | +NO MEETING | ++ | + | + |
Mar 3 | +Reilly | +Word Recognition | ++ | + |
Mar 10 | +Corey | +Fuzzing / IP Recognition | +Jackson Smith | +SSH Config | +
Mar 17 | +Ethan Rogers | ++ | + | + |
Mar 24 | +Wesley | +LMTF Test Followup | ++ | + |
Date | +Research Talk Speaker (20 min) | +Topic | +Tech Talk Speaker (20 min) | +Topic | +
---|---|---|---|---|
Oct 7 | +Hayden Cook, | +FPGA aging | ++ | + |
Oct 14 | +Wesley Stirk, Evan Poff | +LANSCE radiation test | +Xan Johnson | +Github Actions | +
Oct 21 | +Corey Simpson | +Fuzzing | ++ | + |
Oct 28 | +Reilly McKendrick | +RapidWright | +Goeders et al | +VS Code Hacks | +
Nov 4 | +Andres Perez | +Multi-Cell Upsets (MCU) | ++ | + |
Nov 11 | +Ethan Rogers | +VTR and Graph Folding | +Mike Wirthlin | +migen | +
Nov 18 | +Michael Bjerregaard | +JTAG Sniffing/Intel FI | ++ | + |
Nov 25 | +Thanksgiving | ++ | + | + |
Dec 2 | +Andy Wilson. | +RISC-V Reliability. | ++ | + |
Dec 9 | +Jackson Smith | +Linux Kernel Reliability | ++ | + |
IEEE International Conference on Field-Programmable Technology (FPT)
+ ++ Hardware netlists are generally converted into a bitstream and loaded onto an FPGA board through vendorprovided tools. Due to the proprietary nature of these tools, it is up to the designer to trust the validity of the design’s conversion to bitstream. However, motivated attackers may alter the CAD tools’ integrity or manipulate the stored bitstream with the intent to disrupt the functionality of the design. This paper proposes a new method to prove functional equivalence between a synthesized netlist, and the produced FPGA bitstream. The novel approach is comprised of two phases: first, we show how we can utilize implementation information to perform a series of transformations on the netlist, which do not affect its functionality, but ensure it structurally matches what is physically implemented on the FPGA. Second, we present a structural mapping and equivalence checking algorithm that verifies this physical netlist exactly matches the bitstream. We validate this process on several benchmark designs, including checking for false positives by injecting hundreds of design modifications. + +
+IEEE Transactions on Nuclear Science
+ ++ Commercial Systems-on-a-Chip (SoC) have grown more abundant in recent years, including in space applications. This has led to the need to test SoCs in radiation environments, which is difficult due to their inherent complexity. In this work we present two complementary approaches to testing digital SoC devices-- a bare metal approach and an operating system based approach-- and discuss their advantages and disadvantages. +Experimental data collected using these two methods in September 2021 from Los Alamos Neutron Science Center (LANSCE) on the Xilinx UltraScale+ MPSoC is presented and discussed. + +
+IEEE Transactions on Nuclear Science
+ ++ Soft, configurable processors within field programmable gate array (FPGA) designs are susceptible to single-event upsets (SEUs). SEU mitigation techniques such as triple modular redundancy (TMR) and configuration memory scrubbing can be used to improve the reliability of soft processor designs. This article presents the improvements in the reliability of five different TMR soft processors within a neutron radiation environment. The TMR processors achieved up to a 75× improvement in reliability at the cost of potentially 4.8× resource utilization and an average 12.4% decrease in maximum frequency compared with the unmitigated designs. This work compares the metrics of reliability, power consumption, and performance among the default unmitigated processors and their TMR variations. + +
+Proceedings of the 2023 ACM/SIGDA International Symposium on Field Programmable Gate Arrays
+ ++ FPGAs are increasingly being used in space and other harsh radiation environments. However, SRAM-based FPGAs are susceptible to radiation in these environments and experience upsets within the configuration memory (CRAM), causing design failure. The effects of CRAM upsets can be mitigated using triple-modular redundancy and configuration scrubbing. This work investigates the reliability of a soft RISC-V SoC system executing the Linux operating system mitigated by TMR and configuration scrubbing. In particular, this paper analyzes the failures of this triplicated system observed at a high-energy neutron radiation experiment. Using a bitstream fault analysis tool, the failures of this system caused by CRAM upsets are traced back to the affected FPGA resource and design logic. This fault analysis identifies the interconnect and I/O as the most vulnerable FPGA resources and the DDR controller logic as the design logic most likely to cause a failure. By identifying the FPGA resources and design logic causing failures in this TMR system, additional design enhancements are proposed to create a more reliable design for harsh radiation environments. + +
+IEEE Transactions on Nuclear Science
+ ++ This work shows that the static random access memory (SRAM) error rate for a commercial 65-nm device in a dose rate environment can be highly dependent upon the integrated dose (dose rate × pulse duration). While the typical metric for such testing is dose rate upset (DRU) level in rad(Si)/s, a series of dose rate experiments at Little Mountain Test Facility (LMTF) shows dependence on the integrated dose. The error rate is also found to be dependent on the core voltage, and the preradiation value of the bits. We believe that these effects are explained by a well charge depletion caused by gamma ray photocurrent. + +
+ACM Transactions on Reconfigurable Technology and Systems (TRETS) +
+ ++ Field-Programmable Gate Arrays (FPGAs) are widely used for custom hardware implementations, including in many security-sensitive industries, such as defense, communications, transportation, medical, and more. Compiling source hardware descriptions to FPGA bitstreams requires the use of complex computer-aided design (CAD) tools. These tools are typically proprietary and closed-source, and it is not possible to easily determine that the produced bitstream is equivalent to the source design. In this work we present various FPGA design flows that leverage pre-synthesizing or pre-implementing parts of the design, combined with open-source synthesis tools, bitstream-to-netlist tools, and commercial equivalence checking tools, to verify that a produced hardware design is equivalent to the designer’s source design. We evaluate these different design flows on several benchmark circuits, and demonstrate that they are effective at detecting malicious modifications made to the design during compilation. We compare our proposed design flows with baseline commercial design flows and measure the overheads to area and runtime. + +
+IEEE International Conference on Field-Programmable Technology (FPT)
+ ++ This work presents a novel technique to physically clone a ring oscillator physically unclonable function (RO PUF) onto another distinct FPGA die, using precise, targeted aging. The resulting cloned RO PUF provides a response that is identical to its copied FPGA counterpart, i.e., the FPGA and its clone are indistinguishable from each other. Targeted aging is achieved by: 1) heating the FPGA using bitstream-located short circuits, and 2) enabling/disabling ROs in the same FPGA bitstream. During self heating caused by short-circuits contained in the FPGA bitstream, circuit areas containing oscillating ROs (enabled) degrade more slowly than circuit areas containing non-oscillating ROs (disabled), due to BTI affects. This targeted aging technique is used to swap the relative frequencies of two ROs that will, in turn, flip the corresponding bit in the PUF response. +Two experiments are described. The first experiment uses targeted aging to create an FPGA that exhibits the same PUF response as another FPGA, i.e., a clone of an FPGA PUF onto another FPGA device. The second experiment demonstrates that this aging technique can create an RO PUF with any desired response. + +
+ACM Transactions on Reconfigurable Technology and Systems (TRETS)
+ ++ This work demonstrates a novel method of accelerating FPGA aging by configuring FPGAs to implement thousands of short circuits, resulting in high on-chip currents and temperatures. Patterns of ring oscillators are placed across the chip and are used to characterize the operating frequency of the FPGA fabric. Over the course of several months of running the short circuits on two-thirds of the reconfigurable fabric, with daily characterization of the FPGA 6 performance, we demonstrate a decrease in FPGA frequency of 8.5%. We demonstrate that this aging is induced in a non-uniform manner. The maximum slowdown outside of the shorted regions is 2.1%, or about a fourth of the maximum slowdown that is experienced inside the shorted region. In addition, we demonstrate that the slowdown is linear after the first two weeks of the experiment and is unaffected by a recovery period. Additional experiments involving short circuits are also performed to demonstrate the results of our initial experiments are repeatable. These experiments also use a more fine-grained characterization method that provides further insight into the non-uniformed nature of the aging caused by short circuits. + +
+IEEE International Conference on Field-Programmable Technology (FPT)
+ ++ While attempting to perform hardware trojan detection, or other low-level design analyses, it is often necessary to inspect and understand the gate-level netlist of an implemented hardware design. Unfortunately this process is challenging, as at the physical level, the design does not contain any hierarchy, net names, or word groupings. Previous work has shown how gate-level netlists can be analyzed to restore high-level circuit structures, including reconstructing multi-bit signals, which aids a user in understanding the behavior of the design. +In this work we explore improvements to the word reconstruction process, specific to FPGA platforms. We demonstrate how hard-block primitives in a design (carry chains, block memories, multipliers) can be leveraged to better predict which signals belong to the same words in the original design. Our technique is evaluated using the VTR benchmarks, synthesized for a 7-series Xilinx FPGA, and the results are compared to DANA, a known word reconstruction tool. + +
+IEEE Transactions on Nuclear Science
+ ++ Radiation-induced multiple-cell upsets (MCUs) are events that account for more than 50% of failures on triple modular redundancy (TMR) designs in SRAM field programmable gate array (FPGA). It is important to understand these events and their impact on FPGA designs to develop improved fault mitigation techniques. This article describes an enhanced fault injection (FI) method for SRAM-based FPGAs that injects MCUs within the configuration memory of an FPGA based on MCU information extracted from previous radiation tests. The improved FI technique uncovers more failures than is observable in conventional single-bit FI approaches. The results from several MCU FI experiments also show that injecting MCUs can replicate the failures observed in the radiation beam test and identify new failure mechanisms. +
+Space Computing Conference (SCC)
+ ++ SRAM-based FPGAs are frequently used for critical functions in space applications. Soft processors implemented within these FPGAs are often needed to satisfy the mission requirements. The open ISA, RISC-V, has allowed for the development of a wide range of open source processors. Like all SRAM-based FPGA digital designs, these soft processors are susceptible to SEUs. This paper presents an investigation of the performances and relative SEU sensitivity of a selection of newly available open source RISC-V processors. Utilizing dynamic partial reconfiguration, this novel automatic test equipment rapidly deployed different implementations and evaluated SEU sensitivity through fault injection. Using BYU’s new SpyDrNet tools, fine-grain TMR was also applied to each processor with results ranging from a 20× to 500× reduction in sensitivity. +
+IEEE Transactions on Nuclear Science
+ ++ Field-programmable gate arrays (FPGAs) are susceptible to radiation-induced effects that can affect more than one memory cell. Radiation-induced microsingle event functional interrupts (micro-SEFIs) are one of such events that can upset several bits at a time. These events need to be studied because they can overcome protection from techniques such as triple modular redundancy (TMR) and error correction codes (ECCs). Extracting these events from radiation data helps to understand if specific resources of the FPGA are more vulnerable and the extent of this vulnerability. This article presents a method based on statistics and fault injection to identify micro-SEFIs from beam-test data in the configuration memory and block RAM (BRAM) of SRAM-based FPGAs. The results show the cross section of these events for the configuration RAM (CRAM) and BRAM for three families of Xilinx SRAM FPGAs gathered throughout three neutron tests. This article also contains data from a fault injection campaign to uncover the possible CRAM source bits causing micro-SEFIs in memory look-up tables (LUTs) of Xilinx 7-series and Ultrascale devices. +
+IEEE Transactions on Nuclear Science (TNS) +
+ ++ A number of publications have examined automated fault tolerance techniques for software running on commercial off-the-shelf microcontrollers. Recently, we published an automated compiler-based protection tool called COmpiler Assisted Software fault Tolerance (COAST), a tool that automatically inserts dual- or triple-modular redundancy into software programs. In this study, we use COAST to explore how the effectiveness of automated fault protection varies between different benchmarks, tested on an ARM Cortex-A9 platform. Our hypothesis is that certain benchmark characteristics are more likely than others to influence the effectiveness of automated fault protection. Through neutron radiation testing at the Los Alamos Neutron Science Center (LANSCE), we show that cross section improvements vary from 1.6× to 54× across eight benchmark variants. We then explore the characteristics of these benchmarks and investigate how properties of these benchmarks may impact the effectiveness of automated fault protection. Finally, we leverage a novel fault injection platform to isolate two of these benchmark characteristics and validate our hypotheses. + +
+IEEE Transactions on Nuclear Science
+ ++ Soft processors are often used within field-programmable gate array (FPGA) designs in radiation hazardous environments. These systems are susceptible to single-event upsets (SEUs) that can corrupt both the hardware configuration and software implementation. Mitigation of these SEUs can be accomplished by applying triple modular redundancy (TMR) techniques to the processor. This article presents fault injection and neutron radiation results of a Linux-capable TMR VexRiscv processor. The TMR processor achieved a 10× improvement in SEU-induced mean fluence to failure with a cost of 4× resource utilization. To further understand the TMR system failures, additional post-radiation fault injection was performed with targets generated from the radiation data. This analysis showed that not all the failures were due to single-bit upsets, but potentially caused by multibit upsets, nontriplicated IO, and unmonitored nonconfiguration RAM (CRAM) SEUs. +
+IEEE Transactions on Nuclear Science
+ ++ Triple modular redundancy (TMR) is a single-event upset (SEU)-mitigation technique that uses three circuit copies to mask a failure in any one copy. It improves the soft error reliability of designs implemented on SRAM-based field-programmable gate arrays (FPGAs) by masking the effects of upsets in the configuration memory. Although TMR is most effective when applied to an entire FPGA design, a reduction in the sensitive cross section of an FPGA design can be obtained by applying TMR selectively. This article explores several approaches for selecting components to triplicate. The benefit is a reduction in the neutron cross section for any output error as a percentage compared to that of a non-triplicated design. The cost is the percentage of components triplicated. The goal is to maximize the benefit-cost ratio. Twenty-five different selections are tested on a benchmark design. Some selections increase the cross section; others decrease the cross section significantly. +
+ACM Transactions on Reconfigurable Technology and Systems (TRETS)
+ ++ Field programmable gate arrays (FPGAs) are used in large numbers in data centers around the world. They are used for cloud computing and computer networking. The most common type of FPGA used in data centers are re-programmable SRAM-based FPGAs. These devices offer potential performance and power consumption savings. A single device also carries a small susceptibility to radiation-induced soft errors, which can lead to unexpected behavior. This article examines the impact of terrestrial radiation on FPGAs in data centers. Results from artificial fault injection and accelerated radiation testing on several data-center-like FPGA applications are compared. A new fault injection scheme provides results that are more similar to radiation testing. Silent data corruption (SDC) is the most commonly observed failure mode followed by FPGA unavailable and host unresponsive. A hypothetical deployment of 100,000 FPGAs in Denver, Colorado, will experience upsets in configuration memory every half-hour on average and SDC failures every 0.5–11 days on average. +
+International Reliability Physics Symposium (IRPS)
+ ++ Duplication with compare, a circuit-level fault-detection technique, is used in this study in a partial manner to detect radiation-induced failures in a commercial FPGA-based networking system. A novel approach is taken to overcome challenges presented by multiple clock domains, the use of third-party IP, and the collection of error detection signals dispersed throughout the design. Novel fault injection techniques are also used to evaluate critical regions of the target design. Accelerated neutron radiation testing was performed to evaluate the effectiveness of the applied technique. One design version was able to detect 45% of all failures with the proposed technique applied to 29% of the circuit components within the design. Another design version was able to detect 31% of all failures with the proposed technique applied to only 8% of circuit components. +
+International Symposium on Field-Programmable Custom Computing Machines (FCCM)
+ ++ XBERT is an API and design toolset for zerocost access to the on-chip SRAM blocks on Xilinx architectures using the device’s configuration path. The XBERT API is highlevel, allowing developers to specify DMA-like data transfers of memory contents in terms of the logical memories in the application source code and thus is applicable to essentially any design targeting Xilinx devices. XBERT is broadly accessible to application developers, hiding the low-level details of physical mapping and bitstream encoding. XBERT is efficient, consuming zero reconfigurable resources with no impact on Fmax. XBERT achieves a bandwidth of 3–14 megabytes per second (MB/s) and complete readback and translation of a memory in an isolated 36Kb block RAM in less than 0.5 ms on a Xilinx UltraScale+ MPSoC Zynq. +
+IEEE Transactions on Nuclear Science (TNS) +
+ ++ Several recent works have explored the feasibility of using Commercial off-the-shelf (COTS) processing systems in radiation-prone environments, such as spacecraft. Typically, this approach requires some form of protection, to ensure that the software can tolerate radiation upsets without compromising the system. Our recent work, COAST (COmpiler Assisted Software fault Tolerance), provides automated compiler modification of software programs to insert dual- or triple-modular redundancy. In this work we extend COAST to support several new processing platforms, including RISC-V and Xilinx SoC-based products. The automated software protection mechanisms are tested for a variety of configurations, altering the benchmark and cache configuration. Across the different configurations, the cross-sections were improved by 4x–106x. In addition, a hardware-mitigation technique is tested using dual lock-step cores on the Texas Instruments Hercules platform, which is compared to the software-only mitigation approach. + +
+ACM Transactions on Reconfigurable Technology and Systems (TRETS) +
+ ++ High-level synthesis (HLS) has gained considerable traction over the recent years as it allows for faster development and verification of hardware accelerators than traditional RTL design. While HLS allows for most bugs to be caught during software verification, certain non-deterministic or data-dependent bugs still require debugging the actual hardware system during execution. Recent work has focused on techniques to allow designers to perform in-system debug of HLS circuits in the context of the original software code; however, like RTL debug, the user must still determine the root-cause of a bug using small execution traces, with lengthy debug turns. In this work we demonstrate techniques aimed at reducing the time HLS designers spend performing in-system debug. Our approaches consist of performing data dependency analysis in order to guide the user in selecting which variables are observed by the debug instrumentation, as well as an associated debug overlay that allows for rapid reconfiguration of the debug logic, enabling rapid switching of variable observation between debug iterations. In addition, our overlay provides additional debug capability, such as selective function tracing and conditional buffer freeze points. We explore the area overhead of these different overlay features, showing a basic overlay with only a 1.7% increase in area overhead from the baseline debug instrumentation, while a deluxe variant offers 2x-7x improvement in trace buffer memory utilization with conditional buffer freeze support. + +
+IEEE Transactions on Nuclear Science (TNS) +
+ ++ Convolutional neural networks are quickly becoming viable solutions for self-driving vehicles, military, and aerospace applications. At the same time, due to their high level of design flexibility, reprogrammable capability, low powerconsumption, and relatively low cost, Field-Programmable Gate- Arrays (FPGAs) are very good candidates to implement neural networks. Unfortunately, radiation-induced errors are known to be an issue in SRAM-based FPGAs. More specifically, we have seen that particles can change the content of the FPGA’s configuration memory, consequently corrupting the implemented circuit and generating observable errors at the output. Through extensive fault-injection, we determine the reliability impact of applying binary quantization to convolutional layers of neural networks on FPGAs, by analyzing the relationships between model accuracy, resource utilization, performance, error criticality and radiation cross-section. We were able to find that a design with quantized convolutional layers can be 39% less sensitive to radiation, whereas the portion of errors that are considered critical (misclassifications) in the network is increased by 12%. Moreover, we also derive generic equations that consider both accuracy and radiation in order to model the overall failure rate of neural networks. + +
+International Conference on Field-Programmable Logic and Applications (FPL)
+ ++ In this work we demonstrate a novel method of accelerating FPGA aging by configuring the FPGA to implement thousands of short circuits, resulting in high on-chip currents and temperatures. Three ring oscillators are placed across the chip and are used to characterize the operating frequency of the FPGA fabric. Over the course of several weeks of running the short circuits, with daily characterization of the FPGA performance, we measured a decrease in FPGA frequency greater than 5%. After aging, the FPGA part was repeatedly characterized during a two week idle period. Results indicated that the slowdown did not change, and the aging appeared to be permanent. In addition, we demonstrated that this aging could be induced in a non-uniform manner. In our experiments, the short circuits were all placed in the lower two-thirds of the chip, and one of the characterization ring oscillators was placed at the top of the chip, outside of the region with the short circuits. The fabric at this location exhibited a 1.36% slowdown, only one-quarter the slowdown measured in the targeted region. + +
+International Symposium on Field-Programmable Gate Arrays (FPGA) +
+ ++ FPGAs are being used in large numbers within cloud computing to provide high-performance, low-power alternatives to more traditional computing structures. While FPGAs provide a number of important benefits to cloud computing environments, they are susceptible to radiation-induced soft errors, which can lead to silent data corruption or system instability. Although soft errors within a single FPGA occur infrequently, soft errors in large-scale FPGAs systems can occur at a relatively high rate. This paper investigates the failure rate of several FPGA applications running within an FPGA cloud computing node by performing fault injection experiments to determine the susceptibility of these applications to soft-errors. The results from these experiments suggest that silent data corruption will occur every few hours within a 100,000 node FPGA system and that such a system can only maintain high-levels of reliability for short periods of operation. These results suggest that soft-error detection and mitigation techniques may be needed in large-scale FPGA systems. + +
+International Conference on Reconfigurable Computing and FPGAs (ReConFig) +
+ ++ High-Level Synthesis (HLS) allows not only for quicker prototyping, but also faster and more widespread design space exploration. In this work we designed a turbo decoder using Vivado HLS, which has not previously been explored. Our turbo decoder was designed to allow for easy design space exploration, both of algorithmic turbo decoder parameters as well as HLS parameters. Data and analysis on the design space is presented for approximately 200,000 variations with an emphasis on the needed trade-offs when designing a turbo decoder. + +
+International Symposium on Field-Programmable Custom Computing Machines (FCCM) +
+ ++ This paper presents Maverick, a proof-of-concept computer-aided design (CAD) flow for generating reconfigurable modules (RMs) which target partial reconfiguration (PR) regions in field-programmable gate array (FPGA) designs. After an initial static design and PR region are created with Xilinx's Vivado PR flow, the Maverick flow can then compile and configure RMs onto that PR region-without the use of vendor tools. Maverick builds upon existing open source tools (Yosys, RapidSmith2, and Project X-Ray) to form an end-to-end compilation flow. This paper describes the Maverick flow and shows the results of it running on a PYNQ-Z1's ARM processor to compile a set of HDL designs to partial bitstreams. The resulting bitstreams were configured onto the PYNQ-Z1's FPGA fabric, demonstrating the feasibility of a single-chip embedded system which can both compile HDL designs to bitstreams and then configure them onto its own programmable fabric. + +
+IEEE Space Computing Conference +
+ ++ Many space applications are considering the use of commercial SRAM-based FPGAs over radiation hardened devices. When using SRAM-based FPGAs, soft processors may be required to fulfill application requirements, but the FPGA designs must overcome radiation-induced soft errors to provide a reliable system. TMR is one solution in designing a fault tolerant soft processor to mitigate the failures caused by SEUs. This paper compares the neutron soft-error reliability of an unmitigated and TMR version of a Taiga RISC-V soft processor on a Xilinx SRAM-based FPGA. The TMR RISC-V processor showed a 33× reduction in the neutron cross section and a 27% decrease in operational frequency, resulting in a 24× improvement of the mean work to failure with a cost of around 5.6× resource utilization. + +
+International Conference on Field Programmable Logic and Applications (FPL) +
+ ++ Most internal FPGA debug methods require the use of Block-RAM (BRAM) memory for trace buffers. Recent work has shown the viability of replacing BRAMs with distributed, LUT based memory. Distributed memory (DIME) trace buffers are lean and can be utilized in large designs where other debug methods are unlikely to fit. Since LUTs are abundant on FPGA devices, there are nearly always some left unused after the user's design is placed, even for designs that utilize more than 90% of the FPGA's resources. DIME trace buffers are inserted into highly utilized designs within minutes using RapidWright. In this paper we contrast the previously used method of scavenging leftover LUT resources with a preallocation scheme that ensures a certain amount of memory LUTs are left available for distributed memory trace buffers. While causing virtually no penalty to the user design, preallocating memory LUT resources allows the very largest designs to utilize higher numbers of distributed memory trace buffers at lower timing penalties. We also show that depth of DIME trace buffers can be extended from 16 to 256 bits. + +
+IEEE Transactions on Nuclear Science (TNS) +
+ ++ Neural networks are becoming an attractive solution for automatizing vehicles in the automotive, military, and aerospace markets. Thanks to their low-cost, low-power consumption, and flexibility, field-programmable gate arrays (FPGAs) are among the promising devices to implement neural networks. Unfortunately, FPGAs are also known to be susceptible to radiation-induced errors. In this paper, we evaluate the effects of radiation-induced errors in the output correctness of two neural networks [Iris Flower artificial neural network (ANN) and Modified National Institute of Standards and Technology (MNIST) convolutional neural network (CNN)] implemented in static random-access memory-based FPGAs. In particular, we notice that radiation can induce errors that modify the output of the network with or without affecting the neural network's functionality. We call the former critical errors and the latter tolerable errors. Through exhaustive fault injection, we identify the portions of Iris Flower ANN and MNIST CNN implementation on FPGAs that are more likely, once corrupted, to generate a critical or a tolerable error. Based on this analysis, we propose a selective hardening strategy that triplicates only the most vulnerable layers of the neural network. With neutron radiation testing, our selective hardening solution was able to mask 40% of faults with a marginal 8% overhead in one of our tested neural networks. + +
+IEEE Radiation Effects Data Workshop (REDW) +
+ ++ FPGAs are being used in data center applications in large quantities. Single-event upsets (SEUs) occur more frequently within large-scale deployments of SRAM-based FPGAs. This work estimates the neutron cross section for SEUs in the configuration memory and memory blocks of a 14-nm FinFET Stratix 10 FPGA. SEU data was collected using a custom SEU data collection system. The developed system takes advantage of SEU mitigation features available on the device. The New York City FIT rate for SEUs is estimated to be 3.2 FIT per Mbit for configuration memory and 7.1 FIT per Mbit for memory blocks. + +
+IEEE Transactions on Nuclear Science (TNS) +
+ ++ Triple modular redundancy (TMR) with repair has proven to be an effective strategy for mitigating the effects of single-event upsets within the configuration memory of static random access memory field-programmable gate arrays. Applying TMR to the design successfully reduces the design's neutron cross section by 80×. The effectiveness of TMR, however, is limited by the presence of single bits in the configuration memory which cause more than one TMR domain to fail simultaneously. We present three strategies to mitigate against these failures and improve the effectiveness of TMR: incremental routing, incremental placement, and striping. These techniques were tested using both fault injection and a wide spectrum neutron beam with the best technique offering a 400× reduction to the design's sensitive neutron cross section. An analysis from the radiation test shows that no single bits caused failure and that multicell upsets were the main cause of failure for these mitigation strategies. + +
+International Conference on Field-Programmable Technology (FPT) +
+ ++ Complex designs generated from modern high-level synthesis tools allow users to take advantage of heterogeneous systems, splitting the execution of programs between conventional processors, and hardware accelerators. While modern HLS tools continue to improve in efficiency and capability, debugging these designs has received relatively minor attention. Fortunately, recent academic work has provided the first means to debug these designs using hardware and software traces. Though these traces allow the user to analyze the flow of execution on both the software and hardware individually, they provide no means of synchronization to determine how operations on one device affect the other. + +
+International Symposium on Field-Programmable Custom Computing Machines (FCCM) +
+ ++ The PYNQ system (Python Productivity for Zynq) is notable for combining a monolithic preconfigured bitstream, Ubuntu Linux, Python, and Jupyter notebooks to form an FPGA-based system that is far more accessible to non-FPGA experts than previous systems. In this work, the monolithic pre-configured PYNQ bitstream is replaced with a combination of a simple base bitstream containing several partial reconfiguration regions and a library of partial bitstreams that implement a variety of hardware interfaces such as: GPIO, UART, Timer, IIC, SPI, Real-Time Clock, etc., that interface to various Pmod-based peripherals. When peripherals are plugged into a Pmod socket at run-time, corresponding partial reconfigurations and standard device drivers can be automatically loaded into the Ubuntu kernel using device-tree overlays. This demand-driven, partially-reconfigured approach is found to be advantageous to the monolithic bitstream because: 1) it provides similar functionality to the monolithic bitstream while consuming less area, 2) it provides a way for users to modify or augment hardware functionality without requiring the user to develop a new monolithic bitstream, 3) run-time demand loading of partial bitstreams makes the system more responsive to changing conditions, and 4) implementation issues such as timing-closure, etc., are simplified because the base bitstream circuitry is smaller and less complex. + +
+International Conference on Field-Programmable Technology (FPT) +
+ ++ In FPGAs, debug observability is often achievedby attaching memory-based recording circuitry to user signals. Block-RAM (BRAM)-based embedded logic analyzers are ofteninserted into user circuits to observe circuit behavior. Incontrast with BRAM-based approaches, distributed memory:1) is almost always available (user circuits may consume allBRAMs but even highly utilized circuits contain unused LUTs), and 2) can usually be physically located very near to user signals(LUTs are spread across the entire device while BRAMs arelocated only in specific columns). Previous work has shownbasic feasibility and demonstrated that distributed memoriescan provide debug observability for highly utilized circuits. Thispaper focuses on timing impacts and describes the quantitativetradeoff between FPGA device utilization, debug probe count, and clock frequency. For example, a design with 70% of LUTsutilized, with no debug logic, can operate at a minimum clockperiod of 5ns. Instrumenting 300 debug probes increases thisperiod to 7ns, and 1500 probes to 8ns. Placing trace bufferswith a simulated annealing algorithm improved success ratesfrom 20% to 50% depending on the design and probe count. + +
+IEEE Transactions on Nuclear Science (TNS) +
+ ++ Two field-programmable gate array (FPGA) designs are tested for dynamic single event upset (SEU) sensitivity on two different 28-nm static random access memory-based FPGAs-an Intel Stratix V and a Xilinx Kintex 7 FPGA. These designs were tested in both a conventional unmitigated version and a version to tolerate SEUs with feedback triple modular redundancy (TMR). The unmitigated design sensitivity and the low-level device sensitivity were found to be similar between the devices through neutron radiation testing. Results also show that feedback TMR and configuration scrubbing benefit both designs on both FPGAs. While TMR is helpful, the benefit of TMR depends on the design structure and the device architecture. TMR and scrubbing reduced dynamic SEU sensitivity by a factor of 4-54x. + +
+International Conference on Field Programmable Logic and Applications (FPL) +
+ ++ Inserting soft logic analyzers into FPGA circuits is a common way to provide signal visibility at run-time, helping users locate bugs in their designs. However, this can become infeasible for highly (70-90+%) utilized designs, which leave few logic resources or block RAMs available for internal logic analyzers. This paper presents a fast, low-impact method of enabling signal visibility in these situations using LUT-based distributed memory. Trace-buffers are inserted post-PAR allowing users to quickly change the set of observed nets. Results from routing-based experiments are presented which demonstrate that, even in highly utilized designs, many design signals can be observed with this technique. + +
+IEEE Field-Programmable Custom Computing Machines (FCCM) +
+ ++ TMR combined with configuration scrubbing is an effective technique to mitigate against radiation-induced CRAM upsets on SRAM-based FPGAs. However, its effectiveness is limited by low-level common mode failures due to the physical mapping of a design to the FPGA device. This paper describes how common mode failures are introduced during the implementation process and introduces an approach for resolving them through a custom incremental placement tool for Xilinx 7-Series FPGAs. Multiple designs across multiple generations of devices are shown to be sensitive to common mode failures. Applying the incremental placement technique yields an improvement of 10,721x over an unmitigated design through fault-injection testing. Radiation testing is then performed to show that the of this technique is 91,500 days in GEO orbit, a 367x improvement over the unmitigated design and a 5x improvement over baseline TMR. + +
+IEEE Transactions on Nuclear Science (TNS) +
+ ++ Commercial off-the-shelf microcontrollers can be useful for noncritical processing on spaceborne platforms. These microprocessors can be inexpensive and consume small amounts of power. However, the software running on these processors is vulnerable to radiation upsets. In this paper, we present a fully automated, configurable, software-based tool to increase the reliability of microprocessors in high-radiation environments. This tool consists of a set of open-source LLVM compiler passes to automatically implement software-based mitigation techniques. We duplicate or triplicate computations and insert voting mechanisms into software during the compilation process, allowing for runtime error correction. While the techniques we implement are not novel, previous work has typically been closed source, processor architecture dependent, not automated, and not tested in real high-radiation environments. In contrast, the compiler passes presented in this paper are publicly available, highly customizable, and are platform independent and language independent. We have tested our modified software using both fault injection and through neutron beam radiation on a Texas Instruments MSP430 microcontroller. When tested by a neutron beam, we were able to decrease the cross section of programs by 17-29×, increasing mean-work-to-failure by 4-7×. + +
+IEEE Radiation Effects Data Workshop (REDW) +
+ ++ The paper summarizes the single-event upset (SEU) results obtained from neutron testing on the UltraScale+ MPSoC ZU9EG device. This complex device contains a large amount of programmable logic and multiple processor cores. Tests were performed on the programmable logic and the processing system simultaneously. Estimates of the single-event upset neutron cross section were obtained for the programmable logic CRAM, BRAM, OCM memory, and cache memories. During the test, no processor crashes or silent data corruptions were observed. In addition, a processor failure cross section was estimated for several software benchmark operating on the various processor cores. Several FPGA CRAM scrubbers were tested including an external JTAG, the Xilinx “SEM” IP, and the use of the PCAP operating in baremetal. In parallel with these tests, single-event induced high current events were monitored using an external power supply and monitoring scripts. + +
+IEEE Radiation Effects Data Workshop (REDW) +
+ ++ This study examines the single-event response of Xilinx 16nm FinFET UltraScale+ FPGA and MPSoC device families. Heavy-ion single-event latch-up, single-event upsets in configuration SRAM, BlockRAM™ memories, and flip-flops, and neutron-induced single-event latch-up results are provided. + +
+International Conference on Field-Programmable Technology (FPT) +
+ ++ Modern high-level synthesis (HLS)-based tools allow for the creation of complex systems where parts of the user's software are executed on a conventional processor, and the other parts are implemented as hardware accelerators via HLS flows. While modern tools allow designers to construct these systems relatively quickly, observing and debugging the real-time execution of these complex systems remains challenging. Recent academic work has focused on providing designers software-like visibility into the execution of their HLS hardware accelerators; however, this work has assumed that the hardware is observed in isolation. In this work we demonstrate techniques toward a unified in-system software and hardware debugging environment, where the user can capture execution of both the hardware and software domains, and their interactions. We present the performance costs of capturing this execution data, exploring the impact of different levels of observation. + +
+International Verification and Security Workshop (IVSW) +
+ ++ In modern FPGA design, 3rd-party IP is commonly used to reduce costs and time-to-market. However, the complexity of IP and associated CAD tools makes it easier for attackers to maliciously tamper with the IP (i.e. insert Hardware Trojans) in ways that are hard to detect. This work proposes techniques that allows a user to incorporate trusted 3rd-party IP into a design and verify that the incorporation occurs tamper-free. We present comparative results from utilizing this framework across a benchmark suite of 22 designs. We show that the approach reliably detects tampering without giving any false positives. + +
+International Symposium on Field-Programmable Custom Computing Machines (FCCM) +
+ ++ High-level synthesis (HLS) has gained considerable traction in recent years. Despite considerable strides in the development of quality HLS compilers, one area that is often cited as a barrier to HLS adoption is the difficulty in debugging HLS produced circuits. Recent academic work has presented techniques that use on-chip memories to efficiently record execution of HLS circuits, and map the captured data back to the original source code to provide the user with a software-like debug experience. However, limited on-chip memory results in very short debug traces, which may force a designer to spend multiple debug iterations to resolve complicated bugs. In this work we present techniques to enable off-chip capture of HLS debug information. While off-chip storage does not suffer from the capacity limitations of on-chip memory, its usage introduces a new challenge: limited bandwidth. In this work we show how information from within the HLS flow can be leveraged to generated a streamed debug trace within given bandwidth constraints. For a bandwidth limited interface, we show that our techniques allow the user to observe 19× more source code variables than using a basic approach. + +
+Measurement +
+ ++ SRAM-based Field Programmable Gate Array (FPGA) logic devices are very attractive in applications where high data throughput is needed, such as the latest generation of High Energy Physics (HEP) experiments. FPGAs have been rarely used in such experiments because of their sensitivity to radiation. The present paper proposes a mitigation approach applied to commercial FPGA devices to meet the reliability requirements for the front-end electronics of the Liquid Argon (LAr) electromagnetic calorimeter of the ATLAS experiment, located at CERN. Particular attention will be devoted to define a proper mitigation scheme of the multi-gigabit transceivers embedded in the FPGA, which is a critical part of the LAr data acquisition chain. A demonstrator board is being developed to validate the proposed methodology. Mitigation techniques such as Triple Modular Redundancy (TMR) and scrubbing will be used to increase the robustness of the design and to maximize the fault tolerance from Single-Event Upsets (SEUs). + +
+Master's Thesis +
+ ++ SRAM-based FPGAs provide valuable computation resources and reconfigurability; however, ionizing radiation can cause designs operating on these devices to fail. The sensitivity of an FPGA design to configuration upsets, or its SEU sensitivity, is an indication of a design's failure rate. SEU mitigation techniques can reduce the SEU sensitivity of FPGA designs in harsh radiation environments. The reliability benefits of these techniques must be determined before they can be used in mission-critical applications and can be determined by comparing the SEU sensitivity of an FPGA design with and without these techniques applied to it. Many approaches can be taken to evaluate the SEU sensitivity of an FPGA design. This work describes a low-cost easier-to-implement approach for evaluating the SEU sensitivity of an FPGA design. This approach uses additional logic resources on the same FPGA as the design under test to determine when the design has failed, or deviated from its specified behavior. Three SEU mitigation techniques were evaluated using this approach: triple modular redundancy (TMR), configuration scrubbing, and user-memory scrubbing. Significant reduction in SEU sensitivity is demonstrated through fault injection and radiation testing. Two LEON3 processors operating in lockstep are compared against each other using on-chip error detection logic on the same FPGA. The design SEU sensitivity is reduced by 27x when TMR and configuration scrubbing are applied, and by approximately 50x when TMR, configuration scrubbing, and user-memory scrubbing are applied together. Using this approach, an SEU sensitivity comparison is made of designs implemented on both an Altera Stratix V FPGA and a Xilinx Kintex 7 FPGA. Several instances of a finite state machine are compared against each other and a set of golden output vectors, all on the same FPGA. Instances of an AES cryptography core are chained together and the output of two chains are compared using on-chip error detection. Fault injection and neutron radiation testing reveal several similarities between the two FPGA architectures. SEU mitigation techniques reduce the SEU sensitivity of the two designs between 4x and 728x. Protecting on-chip functional error detection logic with TMR and duplication with compare (DWC) is compared. Fault injection results suggest that it is more favorable to protect on-chip functional error detection logic with DWC than it is to protect it with TMR for error detection. + +
+International Conference on Field Programmable Logic and Applications (FPL) +
+ ++ Research tools targeting commercial FPGAs have most commonly been based on the Xilinx Design Language (XDL). Vivado, however, does not support XDL, preventing similar tools from being created for next-generation devices. Instead, Vivado includes a Tcl interface that exposes Xilinx's internal design and device data structures. Considerable challenges still remain to users attempting to leverage this Tcl interface to develop external CAD tools. This paper presents the Vivado Design Interface (VDI), a set of file formats and Tcl functions that address the challenges of exporting and importing designs to and from Vivado. To demonstrate its use, VDI has been integrated with RapidSmith2, an external FPGA CAD framework. To our knowledge this work is the first successful attempt to provide an open-source tool-flow that can export designs from Vivado, manipulate them with external CAD tools, and re-import an equivalent representation back into Vivado. + +
+IEEE Transactions on Nuclear Science (TNS) +
+ ++ A variety of mitigation techniques have been demonstrated to reduce the sensitivity of FPGA designs to soft errors. Without mitigation, SEUs can cause failure by altering the logic, routing, and state of a design operating on an SRAM-based FPGA. Various combinations of SEU mitigation and repair techniques are applied to the LEON3 soft-core processor to study the effects and complementary nature of each technique. This work focuses on Triple modular redundancy (TMR), configuration memory (CRAM) scrubbing, and internal block memory (BRAM) scrubbing. All mitigation methods demonstrate some improvement in both fault injection and neutron radiation testing. Results in this paper show complementary SEU mitigation techniques working together to improve fault-tolerance. The results also suggest that fault injection can be a good way to estimate the cross section of a design before going to a radiation test. TMR with CRAM scrubbing demonstrates a 27x improvement whereas TMR with both CRAM and BRAM scrubbing demonstrates approximately a 50x improvement. + +
+International Conference on ReConFigurable Computing and FPGAs (ReConFig) +
+ ++ Academic packing algorithms have typically been limited to theoretical architectures. In this paper, we describe RSVPack, a packing algorithm built on top of RapidSmith to target the Xilinx Virtex 6 architecture. We integrate our packer into the Xilinx ISE CAD flow and demonstrate our packer tool by packing a set of benchmark circuits and performing routing and timing analysis inside ISE. + +
+International Symposium on Field-Programmable Gate Arrays (FPGA) +
+ ++ Processors are an essential component in most satellite payload electronics and handle a variety of functions including command handling and data processing. There is growing interest in implementing soft processors on commercial FPGAs within satellites. Commercial FPGAs offer reconfigurability, large logic density, and I/O bandwidth; however, they are sensitive to ionizing radiation and systems developed for space must implement single-event upset mitigation to operate reliably. This paper investigates the improvements in reliability of a LEON3 soft processor operating on a SRAM-based FPGA when using triple-modular redundancy and other processor-specific mitigation techniques. The improvements in reliability provided by these techniques are validated with both fault injection and heavy ion radiation tests. The fault injection experiments indicate an improvement of 51x and the radiation testing results demonstrate an average improvement of 10x. Orbit failure rate estimations were computed and suggest that the TMR LEON3 processor has a mean-time to failure of over 76 years in a geosynchronous orbit. + +
+Bootcamp is a summer program for new students (mostly undergraduates) which provides them training and experience computing technologies required to perform research in a variety of Computer Engineering topics.
+ +IIRM-URA is a research collaboration, funded by the Defense Thread Reduction Agency (DTRA), that brings together several different universities and research labs to investigate the effect radiation has on materials and devices. The BYU team is focused on investigating and modeling the effect radiation has on SoCs (Systems On a Chip). Currently, efforts are centered around Xilinx MPSoC chip and how it fails under radiation.
+ +This work focuses on developing techniques to ensure that FPGA designs remain secure throughout the hardware compilation process. Equivalence checking tools are used to determine whether initial RTL circuit or IP modules are equivalent to the placed and routed FPGA bitstream.
+ +Shorty is a project that explores different applications of placing configurable short circuits on Xilinx FPGAs. Applications include localized accelerated aging, hardware trojans, watermarking, and more.
+ +Our research lab actively contributes to several different open-source FPGA tools and compilers, particularly those in the Symbiflow ecosystem.
+ +This project focuses on developing tools to analyze and understand the netlists from unknown FPGA bitstreams. This includes rebuilding design hierarchy, identifying multi-bit words, and locating known IP cores.
+ +COAST is a set of compiler tools that provides automated software protection from single-event effects. Users can select portions of their porgram to protect, and the compiler will automatically duplicate or triplicate instructions. COAST currently supports ARM, RISC-V and MSP430 processor architectures, and has been validated by several tests using the LANSCE neutron beam.
+ +PYNQ PRIO is an addition to the Xilinx PYNQ project. With the integration of PRIO the PYNQ package is augmented with two powerful new features. First is the addition of partial reconfiguration, allowing users to reconfigure targeted sections of the FPGA fabric at will. Second is device tree overlay support allowing users to dynamically load, unload and reload hardware specific Linux Kernel drivers, making the Kernel as reconfigurable as the hardware it supports. Currently PRIO is fully integrated with the Xilinx PYNQ project.
+ +This project demonstrates the use of partial reconfiguration to dynamically configure a custom video processing pipeline during run-time.
+ +