All right, a theology of public life, Lessons for Lot in the City of Sodom, separation of church and state this morning. Last week, we get into our subject this morning now, continuing to build on what we started a couple of weeks ago with specific respect to the overreach of government now. We're, want to talk or introduce, and it's just a brief introduction. All of these things are introductions. So even though we spend an hour each week talking about these things, they really are just brief overviews of subjects, topics that require much, much more study for all of us if we're gonna be fully versed on these things. And so, but I hope that a brief introduction at least during the class in Sunday school will help you as we move forward in considering and thinking about these things. And as we cultivate in the years to come, a good, healthy biblical theology of public life. So last week, we introduced the biblical concept, the biblical concept of jurisdiction. Jurisdiction is a biblical concept. It's from two words, jurist meaning law and diction meaning to speak. And it is the authority that is delegated by God within certain spheres to speak the law, the authority that God gives to speak the law. That authority to speak the law, that jurisdiction is bounded or fenced as determined by God's word. God's word gives us proper jurisdiction or proper authority to speak the law within certain spheres or bounds. For example, the individual has jurisdiction. In other words, the individual has jurisdiction over their own conscience, authority over his own conscience. No one can compel or should compel the conscience of the individual. The family has jurisdiction. A husband over his wife, parents over their children. The state has jurisdiction. God's minister over the people for good. The state should be restraining evil. And then the church has jurisdiction as well. The church may not usurp the authority or encroach upon the jurisdiction of a father, for example. And the state may not usurp the authority or encroach upon the jurisdiction of the church. Neither may compel the conscience of the individual and each has been given a bounded authority or specific jurisdiction. One, however, has been given all authority, who's that? Jesus Christ, that's right. One, only one, may dictate to all and may dictate and compel the conscience, heart, mind of the individual. The Lord Jesus Christ, the one from whom all authority is derived or the one who delegates all authority. Matthew 28 verse 18, the Lord Jesus Christ says that all authority has been given to me in heaven and on earth, go there for and make disciples of all the nations. His authority is the only authority that is unbounded, has jurisdiction over all of those spheres simultaneously. All other authority, including and particularly the authority of the state is a derived or a delegated authority. It's bounded and not just bounded by men or conventions of men, constitutions. It's bounded specifically by God's word. All authority is governed or bounded by God's word, what God says in his word. For all others exercising a delegated authority then, the arbitrary unrestrained or abusive exercise of that authority is what we refer to as tyranny. And we talked about that term some last week. We defined it as the unrestrained, the arbitrary unrestrained or abusive exercise of authority. Tyranny is defined as the arbitrary unrestrained or abusive exercise of authority or power. It's arbitrary meaning without reference to biblical law. It's unrestrained without reference to biblical limitations. And it is abusive without reference to biblical love. Think about those three terms for a moment. I think that well defines tyranny as it relates to God's word. It's arbitrary, the exercise of power being arbitrary is without reference to biblical law. Can someone think with me for a moment and give me an example of what that might look like? What would be the arbitrary exercise of power in that it isn't or without reference to biblical law, what might that look like? John. Do something quote because I said so. Okay, that's very good. I think because I said so is somewhere in the Bible. I'm pretty sure that's right. I've heard that so many times, it's gotta be in there. Yeah, because I said so. Anya? One more time, Justice was. Oh, yes. Very good. Yeah, yeah, yeah. Can we see that right? Exercise of law without reference to biblical law or the arbitrary application of law. We see that in the practice of the Pharisees, don't we? Adding to God's word. Noel, go ahead. If I understand the question correctly, are you asking for an example in our particular context? That could be. Yeah, any context. I know that one of the big ones is gonna be an hour a day and it's been going on for some time, but a portion. So the Lord hates hands. Proverbs six says that the Lord hates hands that shed innocent blood. Yeah. Really, it's murder. They call it abortion, but it's murder is an example of that where it's sanctioned by the state. Very good. Sanctioned by the state, not sanctioned by God's word. In other words, that's an arbitrary exercise of power in the sense that it's power exercised without respect to God's law. Very good. Okay, those are good examples. Think with me about the unrestrained exercise of power. Power exercised without reference to biblical limitations. Biblical limitations. What might that look like? Anyone think of an example? Yeah, it's for Joe. Definitely tyranny. There's no question about that. The quintessential example of tyranny. Yeah, thank you, brother. Yes, Jesse. Okay. Good. Good deal. We're getting the answers too quick, so. You have to hear it like that. You could hear it like that. You have to run, Lee. Anyone else? Yes, Danny. Communism. Yeah, without reference to biblical limitations. Yeah, the worship of the state. Very good. Yeah, 6-0. Lee's saunters of the hour. The arbitrary closing down of churches and like past the coats when he got put in jail and when he got out, he went back to teach and they fenced off his church so they couldn't meet there. Yeah, and they claim, don't they, warrant from the Constitution or warrant from law to do those things, but that's law without limitation. That's authority without limitation. Certainly without biblical, without reference to biblical limitations. And so that unrestrained wielding or exercising of power is an example of tyranny. Those are good examples, okay? And then lastly, abusive. We can think of all kinds of examples with respect to an abusive exercise of power, can't we? When a husband is authoritarian over his wife or when a wife is the drippy faucet to her husband or right inside the home or when mom and dad are authoritarian in their exercise of discipline with the kids. These are, there are ways in which power can be exercised without respect to love. We see that on the part of governments on a regular basis, right? That's one of the boundaries within which power is to be exercised within the bounds of love. So for example, in a Christian marriage, there are certain things that a husband might imagine that he has the authority to do within the bounds of his own marriage as head of his household, but when the husband applies the law of love to what he's thinking might otherwise change what he intended, love governs or sets boundaries on the exercise of a husband's authority. The same boundary exists for governments that are to operate according to God's authority or according to God's law. They should be operating according to the common good, what's good for the people and not what's evil for the people. So when governments pass laws that are, like we have in our country now, passing laws that are harmful or detrimental, in particular Christians, we can think of several of those, right? With respect to gay marriage and just a perpetual series of lawsuits against a baker who doesn't wanna bake a cake, right? Those kinds of things. Excuse me. We can think of those, the arbitrary exercise of authority that's not within the bounds of what the Bible would say is good for the population within the bounds of biblical love. Okay. So tyranny is defined as the arbitrary, unrestrained or abusive exercise of authority. Circumventing biblical law or biblical limitations, circumventing biblical love and a man can be a tyrant in his home, a pastor can be a tyrant in the church, a government can be tyrannical over the state. If you've ever, for example, visited or waited in a two hour line for a ride at Disney in July, then you've witnessed, very likely witnessed, the tyrannical exercise of authority that a two year old might have over his family, right? Standing in line for a ride at Disney. He's wielding a tyrannical influence over the household. It's not his, it's a power that's not his to wield. It's no less unseemly when one of our political parties does the same thing, right? No less distasteful or sinful when one of our political parties does the exact same things. In other words, those issues of jurisdiction operating within the proper bounds of biblical law, biblical limitations, biblical love, that applies to all spheres of authority, not just a husband in his home, not just a pastor in the church, but also to the state, right? Unless a tyrant repents of that tyranny, that tyrant has forfeited his authority and has lost the consent by which he leads. He is not to be obeyed in his tyranny. And we're gonna unpack that statement in detail in coming weeks. That's a loaded statement. But unless a tyrant repents of his tyranny, he has forfeited his authority. He's lost or forfeited the consent by which he leads, the biblical consent by which he leads. Now we're gonna talk about what that looks like, why that is as we work through some texts. Stay tuned for that. Our rights are given to us by God and we enjoy a blessed freedom under his rule. In other words, we don't gain favor or gain our rights from the state. Our rights are inalienable rights given to us by God, not given to us by the state. And those rights are not to be taken away. Tyranny is the satanic counterfeit to God ordained and God given authority. When God instituted government, when God instituted marriage, when God instituted the family, when God instituted the church, God instituted those authorities to operate within biblical parameters, within biblical limitations, within biblical law, according to biblical love, and there to operate according to his word, not autonomously separate from his word or outside the bounds of his word. And so when a state, a family, a church operates outside the bounds of biblical law, that state, family, or church becomes tyrannical in their authority. Tyranny seeks to usurp that authority. Tyranny seeks to steal it as it were, oppress its freedom. And that tyranny is the history of fallen man.  Adam at the fall took upon himself an authority that did not belong to him when he aided the tree in the garden. Adam took upon himself an authority that did not belong to him. Lamech, you remember these stories in the Old Testament. Lamech in Genesis chapter four, taking two wives for himself rather than one. And Lamech exercising vengeance, only belonging to the Lord. Israelites rejected God as ruler over them and subjected themselves to the tyrant Saul, despite all that God said it would cost them, from Adam to Lamech to Saul to the Assyrians to the Babylonians to the Persians to the Greeks to the Romans, to the Pharisees in the Lord's day and to leaders just like them in our own day. We hear all the time, we are law for thee and not for me. Law for thee and not for me. We see that kind of tyranny all over the place. Let me give you an example from the Lord's day. Matthew chapter 23, turn there with me. Matthew chapter 23. And before we begin to look at this more particularly with respect to relationship between church and state, I want you to see just an example of this from the Pharisees beginning in Matthew 23, verse one. Matthew chapter 23, the Lord Jesus Christ is in a scathing confrontation with the Pharisees. And he begins in verse one.  Therefore, whatever they tell you to observe, that observe and do. In other words, the scribes and the Pharisees have an authority, they sit in Moses' seat. So whatever the scribes and Pharisees tell you from the seat of Moses, whatever they glean from the law of Moses, expounding or expositing the law of Moses, from the teaching of Moses, the Lord says that observe and do, right? They're teaching from the seat of Moses. They're expounding Moses, expositing Moses for the people and the Lord says they have authority in that in as much as they speak from the seat of Moses. And so because it's Moses, the Lord says observe, do what they observe, what they tell you to do, right? But that is the extent of their authority verses one through three, whatever Moses says would be good for you to understand and obey, that's what you're to do. But he says, verse three, do not do according to their works, particularly there what the Lord has in mind is their tradition, okay? Do not do according to their traditions, why? Because they say and do not do, right? So what are their works then that the people should avoid doing? Verse three, what is it that is sinful and wicked about their leadership from the seat of Moses? It's not what Moses is saying, right? It's not the word of God. And it's not the authority that they're exercising to command to the people from the seat of Moses. What is it that's sinful or wicked? They say, they command and they do not do. They make burdensome and authoritarian rules that they themselves do not obey. I want you to think with me about that for a moment. Verse four, right? They bind heavy burdens hard to bear. Those heavy burdens are bound with their heartless and ritualistic traditions, the commandments of men. And they lay them on men's shoulders, verse four, but they themselves will not move them with one of their fingers, right? In other words, there is a limit to their authority and the scribes and Pharisees have gone beyond it, okay? Scribes and Pharisees have exceeded the limits on their authority. They bind abusive burdens that go beyond the proper application of the law of Moses. They show absolutely no sympathy, no love. In other words, they won't help. They won't, what does the Lord say? They will not move them with one of their fingers. They're not gonna help in the slightest. What does that sound like? It sounds like tyranny, doesn't it? And it meets the three-part criteria for tyranny that we've already discussed. It goes beyond biblical law. It goes beyond biblical limitations, right? And it goes beyond the bounds of biblical love. They are abusive in their exercise of authority. And so their tyrannical authoritarianism then is exposed by their hypocrisy, right? They say and they do not do. They bind heavy burdens that they themselves can't bear and they won't lift one finger to move it, okay? Closing down hair salons and then going to one to get your do done, right? That's getting caught on video visiting a hair salon after you've closed all the hair salons in the state, right? Closing down churches while supporting public riots. Closing down churches while you leave bars open, right? When the Lord says that they say and do not do, he's saying this about men who are obsessed with religious observance, right? Obsessed with the law. He is talking about those who were keeping every fine point of their religious tradition. So what he doesn't mean is that they say and not do. He doesn't mean that they're not outwardly or externally keeping the law. They meticulously were, they were meticulously faithful to keep external conformity to the law. So what does he mean here? He means it's not from the heart and Lord rebukes the Pharisees for this on a regular basis. They don't actually believe with their peddling, right? They're not obeying the law from the heart. He routinely rebuked the Pharisees for missing the heart of the law. They didn't obey from the heart and so they were hypocrites. There's a place in, I believe it's in, well in Mark chapter seven, but I think it's in Luke chapter 11 where the Lord calls the multitudes to himself and he says to the multitudes that come to him, listen, what goes into a man does not defile him. It's what comes out of a man that defiles him, basically undermining what the Pharisees have been teaching by their tradition. The Lord Jesus Christ does that in Mark chapter seven, the same kind of teaching, they're hypocritical in their application of the law. They're obeying it in external moralism or external formalism, they're not obeying from the heart. So what's the real reason then for this overreach? Overreach of their authority, the rise of their tyranny, you could say in Matthew chapter 23, what's the reason that the Lord gives for this? They want power and influence over the lives of the people. We see that in verse five. But all their works they do to be seen by men, scrambling to find your mask a minute before you're about to go on TV when you've been walking around in public outside without it. But you're about to go on TV, so I've got to have my mask, right? They do all their works to be seen by men. They make their phylacteries broad, enlarge the borders of their garments. They love the best places at the feast, the best seats and the synagogues, the greetings in the market places to be called by men, rabbi, rabbi, sounds like our modern day politician. What does the Lord do then in response to this tyranny? We're gonna talk about this text in particular in the future. But what does the Lord do here in response? He practices and encourages others to practice what we might consider or call Christian resistance. He says, don't do what they do. Don't pay attention to their man-made traditions. That's the emphasis of Mark chapter seven, right? They set aside the commandment of God and place there in the stead of the commandments of God, the doctrines or traditions of men. You're not to do what they do. He and his disciples pick heads of grain on the Sabbath in violation of pharisecal law. They eat those heads of grain with unwashed hands. Why do you and your disciples violate the law and eat with unwashed hands, right? The Lord Jesus Christ heals on the Sabbath. If you remember, I wanna say it's in John chapter seven when the Lord heals the man by the pool at Bethesda. He tells him to rise, take up his mat and walk. The Pharisees find him walking around with his mat and they excoriate him because he's doing something that is unlawful on the Sabbath. It was something that the Lord Jesus Christ told him to do. In Mark chapter seven, the Lord calls the multitude together after one of these incidents teaches against their traditions, against their pharisecal laws. This is an example, if you will, of Christian resistance to tyranny. The scribes and Pharisees, leaders of the people, here in this case, have gone beyond their proper jurisdiction and are now binding men's consciences, binding the conscience of the individual outside the parameters of God's law, which is not what the state government leaders, families, pastors, fathers, it's not what we're to do. We're not to compel or bind men's consciences outside the parameters of biblical law. In doing that, they've become tyrants and the Lord meets that tyranny with the law of God and proper resistance. I would submit to you as we move forward in this study and we get to the point of application. That's what we're gonna discuss. We're gonna discuss the Lord's response to this moving forward by applying biblical law, biblical parameters and a healthy theology of Christian resistance. I would submit to you that when it comes to our government, professing Christians have done a very, very, very poor job of that over decades now, over decades. Poor job of following the Lord's example in this. Our government, and I think this is an important point to think about, our government is no less accountable to the law of God than the Pharisees were in the Lord's day. No less accountable to the law of God, no less accountable to obey God, to be God's minister for good. Apart from that law, we, our government in particular, has no objective moral basis for any law. And we're gonna see a fairly rapid deterioration in the laws that this country passes. They're gonna be passing laws with respect to the will of the individual or the will of the mob, for example. We're gonna talk about democracy soon. Our founding fathers, there were multiple throughout our history that did not believe democracy was a good idea, that's why we're a republic, is because democracy devolves into mob rule and morality then is determined by mob vote. And we're gonna see that in a short order. We're already seeing that based on the preferences or the supposed morality of secular humanism, Roman first and his buddies. We've seen laws pass with respect to divorce, laws pass with respect to abortion, laws pass with respect to marriage, and that's gonna continue to be the case. We already see that in other countries with respect to a freedom of speech. Here recently there was a pastor who was arrested on a street corner in London, open air preaching, mentioned homosexuality, he was arrested, arrests apparently fairly numerous now in Canada, so it's coming to a neighborhood near you. When our government violates the boundaries of its proper jurisdiction, what should we do? We should do what the Lord does, rebuke and resist, we'll talk about that. What has undermined this proper response in part or maybe what began to undermine the church's response to tyranny in our recent past has been a misunderstanding of the separation of church and state. Church and state, a misunderstanding of the separation between church and state is one spoke if you will on a wheel of problems that have led to the circumstances that we find ourselves in, but this was a big one and I wanna introduce it to you this morning, we'll talk about it more in the coming weeks. We've come to think, many professing Christians have come to think that the government is entitled to act without responsibility to the law of God, that somehow because there is this separation between church and state, that the government is entitled to act autonomously from the law of God, is entitled to act without responsibility or accountability to God. And secondly, that Christians then are out of bounds to insist that the law of God should be considered. Now, we're very, very, very late in coming to that party and the damage that has been done, I personally see as irreparable, but it does not negate our responsibility as the church to address the state with the law of God and insist that the law of God be observed or that the principles contained in the law of God be the basis for our morality. I think the church in being a voice with the gospel to this culture needs to insist on that and we have to fulfill our responsibility and our generation to that end, even though ground has already been given up in large part to the enemy in that. The professing church today is a modern day Eli. We don't restrain anything, right? The professing church doesn't even restrain sin within its own ranks. You talked to 99% percent of pastors or church members, professing Christians in our country today and they've never even heard of church discipline. I have no earthly idea. And those are texts in the Bible that deal specifically with that. They've never even heard of the concept before, much less actually practice it. And if it can't, if the church won't restrain sin within its own ranks, it certainly can't restrain anything outside of its own ranks. Most professing Christians are complicit. In the very sins, they are called to restrain. In other words, if you talk to, for example, the folks from here that go out to witness preach the gospel at the abortion mill, how many times brothers and sisters that go out there, how many times do you speak to a professing Christian, right, who is asking the Lord for forgiveness as they go into murder their baby, right? That's a routine experience on the part of those who are witnessing. We run into professing Christians on a regular basis who are complicit in the very sins that the church is called to restrain. Not only approving of those who practice such things, Romans chapter one, verse 32, but doing the very same things themselves under the judgment of God. A right understanding of the separation of church and state will help us to better understand our responsibility to and for the state. In other words, we need to have it clear in our head. Even if the state misinterprets or misunderstands that, which the state inevitably always does, you and I, we need to have our minds wrapped around that. We need to be thinking clearly about it so that we can understand our responsibility to and for the state. There is an overlap in jurisdictions or spheres. I think beginning next week, we're gonna look at Abraham Kuiper's sphere sovereignty, which I think will be really helpful. But there is an overlap between these various spheres. And that's because we're all applying principles from God's word and it provides a helpful system of checks and balances. The church is to be a helpful check and balance to the power of the state. The state is to be a checks and balances against the tyrannical rule, for example, of a father or even a church, right? They're a helpful system of checks and balances. But what's happened in our country is an entirely successful effort to entirely separate the influence of the church from the operation and affairs of the state. There's been a wall that's been built. The state continues to pursue control or jurisdiction over the church to some increasing degree, but the church is to have absolutely no influence whatsoever over the state. So the state, like again, a power-hungry Leviathan continues to encroach upon the spheres that it has no authority to intrude upon, continues to encroach upon those spheres and has effectively blocked any influence whatsoever from the church. This successful, very successful effort has been won by very aggressive secularists, proponents of the new religion that we've been talking about in weeks past, and that's been won, that Vickery's been won, over a very sluggardly and feckless professing, but apostate church, and that's the church in our country today, cowardly, inept, impotent, feckless, sluggardly, if it can't rouse up enough indignation over the murder of 60 million babies, has no hope of arousing any kind of indignation over anything, and that's what we see largely in the church today in our country, and that kind of church you find on virtually every corner in town. That effort won by secularists has been largely won in the courts, and that in the courts through a misrepresentation or a misapplication of the First Amendment, the US Constitution, with regards to the separation of church and state. In conceiving of the First Amendment, our founders had in mind countries and peoples ruled by monarchs who used official state churches to wield a tyrannical or authoritarian control over the people they governed, right? So you imagine when the Puritans, the Huguenots, began to come to the United States coming here for religious freedom, they're coming from countries where the state used the power of the church to wield an authoritarian control over the people, and they did so by establishing state churches of which the monarch became the head, and there was this divine right of kings that God had given authority to the king over the affairs of state, and no one could question his authority. So the founders, and thinking of that when they came to our country, began to conceive of the government that we're now under, the founders then intended the First Amendment to protect churches from that, from the encroachment of the federal government, particularly the Congress, in setting up a state religion that would encroach upon the sphere sovereignty of the church. James Madison said this, the people feared that one religious sect might obtain preeminence or two combined together and establish a religion of the state to which they would compel other religions to conform. And that's exactly what we see in Europe, in the rule of English kings, for example, they're Protestant would come in and the country would turn Protestant, would revert to the Anglican Book of Common Prayer, a Catholic would come in, all the Protestants would be driven out, Protestant pastors would be murdered, and Catholicism would be instituted as a state religion, right? And then that queen would be dethroned and the next Protestant would come in. The founding fathers were only too familiar with this form of tyranny. And so conceived of our First Amendment to protect the right, not of the government, but to the protect the right of churches to act within their own sphere, autonomously from encroachment by the state. It was never meant to sequester government from the influence of the church. That was never the intention of the First Amendment. Supreme Court Justice Joseph Story, it was late 1700s, any attempt to level all religions and to make it a matter of state policy to hold all religions in utter indifference would have created universal disapprobation, strong disapproval, if not universal indignation. In other words, what Supreme Court Justice Joseph Story is saying is that if our government intended through the First Amendment to say that in our country, all religions, whether it was Islam, Judaism, Christianity, Buddhism, Hinduism, et cetera, that all of those were completely level and that one in particular Christianity did not have a preference in our country or that it was to hold all religions in utter indifference. In other words, did not bear a preference to our Christian founding. He said that would have created universal disapprobation, a strong disapproval in the part of the public, if not universal indignation. In other words, the people would not have stood for it. They would not have stood for it. This was founded on Christian principles. Our country is founded on God's law. The intent of the First Amendment was to prevent, this is again Joseph Story, was to prevent any national ecclesiastical or church establishment which should give to a hierarchy the exclusive patronage of the national government. There was not to be any national government church. There was not to be a state church. You guys have heard in particular recently, I'm sure with the, maybe the death of Prince Philip in the news, you've heard of the Anglican church, the state church of England. Who is the head of the state church of England? The queen. Does the queen belong over the church in any form or capacity? No, right? So that's one of the things that the founding fathers were attempting to avoid through the First Amendment. In fact, the language, that language separation of church and state does not appear anywhere in our constitution or in the First Amendment. Doesn't appear anywhere. The law, it's contained in what's called the establishment clause of the First Amendment. The establishment clause of our constitution, the First Amendment says this, Congress shall make no law respecting an establishment of religion or prohibiting the free exercise thereof. Congress shall make no law respecting the establishment of religion. They can't form a state run church, a government run church, nor can they prohibit the free exercise thereof. They can't get in the business prohibiting or restricting and crocheting upon the free exercise of religion on the part of any church in our country. That's the establishment clause of the First Amendment. So where does the language separation of church and state come from? It's been used, that language has been used in court cases over decades to effectively take any religious influence whatsoever out of the schools. Nevermind religious influence. You can't pray. There's been fights about football coaches saying the Lord's prayer with the team before or after a football game, right? You can't do that. There've been students only, no teachers, no faculty, students only wanting to gather around the flag. There's one day a year, I can't remember what that day's called. One day a year they gather around the flag to pray that's been nixed, canceled in most schools. Can't bring a Bible or open a Bible in most classrooms. Can't wear a T-shirt with any kind of religious statement on it. In other words, the state has done a very, the ACLU groups like them, done a very, very, very effective job of eradicating any influence, any presence at all of the church in public schools, for example, that has been done in the courts on the back of this very statement clause, the separation of church and state. So where does that language comes from? Come from, well, it comes from a letter, a personal letter that Thomas Jefferson wrote to the Danbury Baptist Association in 1802. The Danbury Baptist Association wrote to Jefferson, was president at the time, complaining that under current law, or the way that the First Amendment was currently worded, that the language of our founding documents, in particular the Declaration of Independence, appears to communicate that rights, the rights that we have are given by the state. And the Danbury Baptist Association, Baptists have always believed in a jurisdiction, a jurisdictional division between church and state. Danbury Baptist Association wanted Jefferson to consider amending the language to make it clear that our rights are given to us by God and not by the state. It was language that wasn't overly clear in the way the documents were originally written. Jefferson, in his reply to the Danbury Baptist Association, makes a comment about a wall, building a wall of separation between church and state. In other words, wanting to encourage the Baptists in the free exercise of their religion and guaranteeing to them no encroachment by the state by saying that there has been built in the language of the Constitution, there's been built a wall of separation between church and state. And that was, again, a private letter from the Danbury Baptist Association of Jefferson, and then Jefferson's reply to that association, Jefferson was not a part of the Congress, the Constitutional Congress in 1787 that formed or wrote the First Amendment. He was not a part of the Congress that passed the Bill of Rights, and yet that letter of Jefferson has been used to argue Bill of Rights cases and First Amendment cases for decades since, upholding what Jefferson called a wall of separation. Now, that statement argued in virtually every case involving prayer in schools, religious meetings on school grounds, now the hanging of the 10 commandments in courthouses, prayer before sessions of Congress, it continues to be argued in virtually every religious liberties case that goes before the court. So what is the biblical and therefore the correct way to see a separation of jurisdiction between civil and ecclesiastical boundaries? Where do we go to get a right view of that? We go to the Bible, right? Go to the Bible, and in the Bible there are multiple examples of this, multiple examples of what the Bible upholds as a proper separation of church and state, proper jurisdictional boundaries or jurisdictional roles of the state as compared to the church. A couple of those examples up front, we see for starters in Israel, throughout the Old Testament, we see a jurisdictional division between church and state in the affairs of Israel, the nation of Israel. You have Moses, Moses appointing the 70 elders, Moses appointing leaders over thousands and leaders over hundreds and leaders over 50s, right? So Moses and the leaders given jurisdiction over the civil affairs of the state, but who had ecclesiastical authority for the state? Who was over the church, if you will, in the nation of Israel? Aaron, a high priest. And who did Aaron have working for him? Moses had the leaders, had the elders, Aaron had the Levites, right? So there was a jurisdictional separation between civil and ecclesiastical responsibilities. You see that persist throughout the Old Testament, the kings and the priests in the Old Testament. For example, a king Saul and Samuel. You remember that story from the first Samuel where Samuel delays his coming and what does Saul do in violation of the law? He sacrifices the burnt offering, right? He sacrifices the burnt offering because he was tired of waiting on Samuel. Samuel's delayed his coming. What did Saul do? Saul violated his jurisdiction. He had no authority, no authority to offer sacrifices of burnt offering before the Lord. Samuel was the one that was to do that. Saul overstepped his bounds. You see that with David and Nathan in a different way. King David, but who comes to David to rebuke David for his unrepentant sin with Bathsheba and killing Uriah the Hittite? Nathan, right? You have David who is given authority over the civil affairs of state. Nathan, the high priest at the time, the prophet, given ecclesiastical authority to confront David in his sin, okay? We see that in multiple cases in the Old Testament. It's throughout the Old Testament, right? We see overlap and we see influence. For example, in the case of David and Nathan, you see influence, you see overlap, but there is a clear jurisdictional separation. Dr. Damar, again, we would not agree with Dr. Damar's theonomy, but we would agree with much of what he says here. Says there was never such a separation between church and state that the state was free from following the guidelines of scripture for its civil duties. The state was to submit itself to the word of God. In fact, it's in Deuteronomy 17 where kings who are given, again, authority over the state, kings are required of God to write their own personal copy of the law of God and kings were to see to it that they and their government and their people obeyed the law of God. They were to keep the law of God with them at all times. So priests and kings were required to go to the law to be instructed. Let me give you an example of this usurpation or tyrannical overreach of this authority or this jurisdiction and second chronicles. Turn to second chronicles with me. Let's look at an example. We'll conclude with this and then I'll maybe give you a few minutes here to ask questions. I've been rambling for a while, so hopefully I can give you a few minutes to ask questions. Second chronicles, chapter 26. In chapter 26, we have the example of King Uzziah. King Uzziah was a good king, but then overstepped his bounds late in his reign. We see that in verse 16, verse 16, right? Just one example of authoritarian or tyrannical overreach by a king in Israel, having jurisdiction over the civil affairs of state where the high priest, the Levites had jurisdiction over the ecclesiastical affairs of state. Look at verse 16. When he was strong, when Uzziah was strong in his heart, he was lifted up to his destruction for he transgressed against the Lord his God by entering the temple of the Lord to burn incense on the altar of incense, okay? So we see the problem, right? The king didn't have authority to do that. Only the priest could do that. Verse 17. So that was a jurisdictional overreach. He exercised an authority in an arbitrary, unlimited, or abusive way by overflowing the banks, if you will, of his jurisdiction. Verse 17. So Azariah, the priest, went in after him and with him were 80 priests of the Lord, valiant men, the men who were prepared to fight, right? Verse 18. They withstood king Uzziah and said to him, it is not for you, Uzziah, to burn incense to the Lord, but for the priests, the sons of Aaron, who are consecrated to burn incense. Get out of the sanctuary for you have trespassed. You shall have no honor from the Lord God. Now wait a minute. I thought we were to obey the governing authorities that all of these authorities were appointed by God and that we're to obey the governing authorities. Who do these priests think they are standing up to the king in this way? You see the difficulty, right? Uzziah has transgressed the law of God by operating outside of his jurisdiction. Verse 19. Then Uzziah became furious, which is oftentimes what kings do, right, in their tyranny.  And while he was angry with the priests, leprosy broke out on his forehead before the priests in the house of the Lord beside the incense altar. God affirmed the boundaries here. Verse 20. And as the chief priests and all the priests looked at him and there on his forehead, he was leprous. So they thrust him out of that place. Indeed, he also hurried to get out because the Lord had struck him. King Uzziah was a leper until the day of his death. He dwelt in an isolated house because he was a leper for he was cut off from the house of the Lord. In other words, he lost or he forfeited the authority with which he governed. He lost the consent from God with which he governed. And in his tyranny was not to be obeyed in that sense. He was cast out. He was cut off from the house of the Lord and Jotham, his son, was over the king's house judging the people of the land. The rest of the acts of Uzziah from the first to the last, the prophet Isaiah, the son of Amos wrote. Uzziah rested with his fathers. All right, so just an example. One of many, many, many examples in the Old Testament as we'll see in coming weeks when we start going through New Testament texts. There are many, many examples of this in the New Testament as well. Suffice to say for now in terms of an introduction to separation of church and state that were given as the church, as the family, as the government, as the individual were given jurisdictional boundaries. And one sphere is not to encroach upon in an authoritarian way, not to encroach upon the sphere of another. When in particular government, generally the one who likes to do this, when governments begin to exercise authority outside the parameters or limitations of God's law, outside the parameters or, thank you brother, biblical limitations or outside the parameters of biblical love, then the state is abusive or wielding its authority in an unrestrained or unlimited way. And that's the very definition of tyranny, right? And we as Christians then need to address the state in their overreach. We'll talk about how that's done in the future. All right, with the few minutes remaining, we'll give you an opportunity to ask questions if you have any. Please forgive me for continuing to ramble. Tyler, thanks Lee. Hopefully these things will become more clear as we keep going forward. So as I understand it in second Chronicles 26, what you're saying in these other examples, first Samuel 15, you're drawing a comparison or a parallel between Old Testament, Israel's division of civil law and Levitical law. You're drawing that comparison today with the separation of church and state. Yes. Okay, thank you. Yeah, and it's a good point too, thinking about that brother that, so we'll talk about this subject more in detail in the future also, but a theonomist, someone who would hold to theonomy would say that the civil and judicial laws of Israel should be applied to governments, Gentile, so thank you brother, essentially Gentile governments outside the church today and we would disagree with that. So where we would see those Old Testament examples are as illustrations of government overreach in our own day, but not as prescriptions for how our government is to operate. In other words, there are those who would say that our government today should operate according to biblical law, that if someone commits adultery, they should be put to death, right? If a woman is thought to be an adultery, we should make her drink bitter water and determine whether she gets a swollen stomach that she's guilty or not guilty. There are theonomists who believe in a practical application of Old Testament theocratic the civil and judicial law of Israel, that law should be applied to the Gentile States today. We would strongly disagree with that, but I think the illustration is valid that there's an overreach on the part of the judicial or civil branch into the ecclesiastical branch and then how the ecclesiastical branch responded and that jurisdictional separation is established in the Bible and that's the basis of a separation between church and state. By the time the founders or the Puritans got to the colonies, that jurisdictional separation was already established. It wasn't established in the First Amendment, it was established by the letter from Thomas Jefferson. The separation was already established by Bible-believing Christians who knew the word of God before that. It was abused by the courts after Jefferson wrote the letter, but not established by the courts or established by our country. Last question, and we can keep going. Yes, hey brother, nice haircut. Did Ralphie do that to you? So yeah, so my question, it comes from this basin, this has been amazing how we understand because actually I have an ex roommate, if that's the thing, that was just adamant about the separation of church and state, just build that wall. But based off of everything that I've been hearing, it seems that only the state has been encroaching on the church and the state has been trying to seek its Leviathanical tentacles into the power of the church to control it. But I guess my question is, how is it that people can see the church controlling the state or building the wall, thinking that the church is encroaching our rights or how can they sit there and try to squash more of the power of the church, thinking the church is being over authoritarian? Yeah, yeah, the state had no double standard and it had no standard at all. So there's a double standard at work there. The courts have been very successful in keeping out any influence on the part of the church at all. So our authority, the church's authority is a declarative authority. We have a responsibility to declare the word of God, to preach the gospel. And I think in particularly in our day and age, and really what the church has largely done, the professing church, have to make that clarification. What the professing church has done today is really abandon its declarative role by monasticizing itself, clustering itself within the four walls of the church rather than preaching to the culture, the gospel. And you see examples of that in the New Testament with, for example, John the Baptist lost his head for it, but wasn't going to let Herod get away with it without a word from God, right? And I think the church needs to have that attitude today that we need to stand up for God's word and not just let wickedness run amuck without a word from God to that. And so as for us, brothers and sisters, we're gonna have to consider how it is that we're going to do our part in that. That's to be faithful. And I think it'll become more clear to us as we continue working through the series. So thanks for the questions. All right, let's pray and we'll prepare for worship. Father in heaven, thank you again for your instruction on this, for how clear your word is on this and help us to apply your word biblically, faithfully. For the sake of the Lord Jesus Christ and His kingdom and His rightful rule and reign as king. And I pray, Lord, that you would give us much fruit for our labor. And as we follow you faithfully in proclaiming the gospel and to this lost generation, I pray, Lord, that you would give us much favor for the sake of our Lord Jesus Christ, much fruit for our effort for the sake of His kingdom. Centers would be saved and that, Lord, if you would allow that we might even experience an awakening, a great awakening here in this generation, maybe a return of righteousness of some holiness, Lord, before the end, should you determine to return and ask you, Lord, that you might for the sake of our Lord Jesus Christ, for His glory, for the sake of the gospel, would bear fruit to that end. We love you, we thank you for this. Thank you for this precious church and these brothers and sisters, and pray, Lord, that you'd help us as we consider our part in all of this. In Jesus' name, amen.


Awesome. So it turns out names don't really matter because I changed the name of the talk. So a dog by any other name, the original name was, you know, rose by any other name. So Shakespeare, right? Names don't really matter. And then I realized I was putting the talk together that I had a really cool metaphor about dogs. So I changed the name. The real punchline is sort of understanding computational and hardware complexity and software defined radio. Marcus sort of give us a wonderful wonderful end of the perspective from the CPU side, which is sort of this is what we're seeing in terms of scheduling. And hopefully I'll kind of pitch in and provide a complimentary view. Unfortunately, it's not going to be a sort of technical and sort of advanced. But the basic idea is that if you are new to SDR or you are new to putting things on FPGAs, what are the things that go awry? Why isn't this working? Or if you have had experience with an FPGA and felt really bad afterwards. Maybe I could tell you what happened. And so my primary thesis that kind of underlies almost everything I do is that algorithms change to suit the hardware context. And in part, I'm an evangelist. I am here to tell you this and convince you and give you some of my religion that you can't just take the stuff that works on CPU and run it on an FPGA. That's not how this works. Hopefully by the end you'll agree with me.  So who am I to say this though? I'm just a guy who wandered in an hour ago. So I'm a digital hardware engineer. So I've contributed to chips at public trade companies, big chips. So those were itaniums and 8-core Xeon. Intel's really cool GPU that never really took off. You know, an actual GPU later. And then I tape out my own chips to examine radiation effects. So I'm kind of all consumed with how things work. Back long ago, before I did all this, I started out with hardware software co-design. So one of the challenges somebody gave me was if we wanted to take a GPU and have it render movies like Pixar does, how do we do that? The answer is very small triangles and it involves changing all of the hardware and not doing it any of the way that the Pixar people did it. So I ended up moving on from that to domain specific languages to RTL for image processing. So how do I take high level descriptions of an image processing application and turn it into hardware? And so I spent a lot of time thinking about abstractions, how to make this good. And everything sort of ends up being line buffers and local buffers.  It's sort of the general rule of thumb. Every time somebody goes, but I want something else, I go, great, but you need to pay for it. And so we wrote this up. So this was actually my thesis. We had a publication at SIGGRAPH sort of describing the abstraction. And then the much better version of this is called Halide that actually does have all of this implemented. Sort of we talked to those guys that was doing this work and then they made it real and made it free and open source. And so I'd encourage you to look at that. One of their solutions to the scheduling problem is to actually let the user directly describe the schedule. And so they've sort of thrown their heads up and said, well, it's not my problem. My job is just to implement what you tell me to implement. So as a part of my thesis work, we were constantly demoing things to DARPA on FPGAs. And wouldn't you know two weeks before the demo, it would be dog slow. And I'd be super sad because that wasn't my job. I was doing the ASIC stuff. Somebody else was in charge of the FPGA stuff.  So we spent a lot of time reading through the manuals to figure out why is it slow. And it turned out in most cases it's because we just didn't understand how the primitives worked. We had some fundamental misconceptions. And so some of this is this. And so that work has also been open sourced. Jing Pu did that Halide to HLS flow. And he has a wonderful paper exploring some further topics in that area. So currently we're working on this general problem. That's actually how we got interested in GNU radio. It's sort of this wonderful set of applications and wonderful abstractions to sort of look at what's going on. So given a set of code written by domain experts, can you identify kernels, procedureally label those kernels in some format, discover the taxonomy kernels, and predict an arbitrage. This might be the solution to somebody gave me a GNU radio block that is the entire processing application in one block. How would I break it into little blocks? And maybe produce FPGA code. So we're currently focusing on discovering kernels in the code. So the big problem is if you look at a static trace of code, you have no idea what it does. What you see is little colored blocks that are incomprehensible assembly. If you went back and relearned ASM, you might eventually be able to piece it together. But for all I'm concerned, it's just little pieces of the rainbow.   And eventually from that, you can figure out how they cluster and what the data flow is. And so this is sort of the five-second pitch for some ongoing work that we've had, that we've open sourced on how do you do this tracing and how do you isolate the kernels together. So we have code ocean with some of our data set for that, and the actual stuff. And we have a pre-print if you want to find out all the cool details about what's going on. But we view this as sort of a procedural way to kind of discover the things that I'm about to talk about. So onto the metaphor. FPGAs are like puppies. Puppies are really cute. You see a puppy, and you want a puppy. Right? It is, I think cats. Definitely cats, too. Right? And you look at them and you go, I got to have this. I got to have this in my system. So why do you guys think this about FPGAs? Well, so what I did was I went back maybe for the past 15 years, looked at a lot of the published numbers for different things. And it turns out that in general, bottom left here is the good part. Bottom is area. Left is energy. FPGAs are in general a good 25x better than processors. They're not better than ASICs, but you don't want an ASIC because an ASIC does one thing. You want something programmable, and your choices seem to be DSPs and FPGAs. We could give a whole other talk about DSPs, but FPGAs seem a little bit more reasonable for the time slot. So you get about 25x, and that's just if you're putting them on equal footing. And all of the systems that you're going to deal with, they've disproportionately allocated resources to the FPGA. So they've given the processor one watt, and they've given the FPGA 10 watts. So take that 45x, or sorry, that 40x, and now you have 400x. So you should be expecting two to three orders of magnitude improvement when you go to run your applications. But often, as we're just hearing, that just doesn't happen. The other thing is that people are selling really cool toys. So this is a Lime SDR, right? I thought it was just a pretty board. They're neat, you know, as an electrical engineer. I love things with little black boxes inside or all over it. So the problem is you go buy your FPGA. Now you have a puppy, right? And now you're sort of addressed with the reality that, you know, you've got to feed and take care of this thing, right? It's not all cool pictures with matching hoodies, right? And so these are roughly what your system pitfalls are, right? There's a whole architecture metaphor about the feed and care of your accelerators, you know, and that's sort of here too. The other problem is you need to figure out how to work with this animal, right? And so it turns out that dogs do not like to be yelled at. That if you just keep yelling, roll over, they will never roll over. So the way that you teach dogs to do things is you sort of work through small atoms of a trick. So a rollover is like six steps that you have to teach a dog. And if you work through those six things, get them to sequence it, they can do it. So FPGA design is sort of the same way. Once you learn what the atoms of the FPGA are, you're fine. And after that, you can model what's going to happen with your accelerators by just sort of putting those atoms together. And it turns out that an FPGA doesn't have that many, so it's not too awful to learn. So what are the system pitfalls? So we're going to start really basic and some of you are just going to groan. But you really need to understand what your application's composition is. So you have an application, right?   And it didn't matter. You got a little bit, but it's underwhelming, right? I was just talking about 400x. Where's my 400x? Right? This just didn't happen. So you need to optimize the things that matter, right? So take all the red things and speed those up on the FPGA and then life is better. So if you don't actually know what's in your application, mapping it to an FPGA is going to be very, very hard. It's not going to be a straight code dump sort of thing. So for most folks, this is kind of obvious, but it bears saying. The sort of interesting thing here, though, is that if you were hoping for, you know, at least 40x, you have to map 98% of your runtime at minimum to get it if the accelerator is running infinitely fast, if you're not paying any latencies and if you're not dealing with any overheads. 98% is a lot, right? So in a real application, you should be looking at like three nines of your runtime is mapped. So nothing running on the CPU, everything running on the FPGA. So first, understand your sources of latency. Your source of latency is that these are very complicated things. There's tons of wires everywhere, tons of channels, and all the channels have latency. So this is from the Zinc Ultra Scale Plus spec. Don't worry about what's in it. The real point is that this is an atrocious figure to try and figure out what is going on when your processor is communicating with your programmable logic. It's even worse if you're using one of the USB ones, because you are going through the backplane of your motherboard, through the USB controller, through the USB, and it's just totally gross and awful. Oops, that's not mine. This one's mine. So for context, right, we go back to our thing that was totally awesome, and now we added latency, right? So you guys are comms people, right? You should have noticed that all of my communication lines were horizontal. I was committing a sin, right? There's no free communication. So all of a sudden, I am now approaching the original speed that I had, even though I'm totally sped up. So, you know, where does this all come from? So for dramatic effect, this isn't how most things work, but this is how bad it could be. So your user makes a blocking call to the OS to use the driver. Don't do this. Get rid of your operating system. The OS forced the cache to flush, not because it was a good idea, but because security protocols require it to flush caches now. The driver then forced a data copy because the memory spaces aren't shared between user space and the driver space, so it actually has to do a memory copy on the processor side before it can do any work. The driver then needs to send a command to the DMA engine in the P programable logic to ask for the data that it wants. Then the driver needs to pull. Then finally, the driver can send a command to the accelerator that it's allowed to read from the DMA to make forward progress. Then the driver needs to pull the accelerator for completion. Then it commands the other DMA to get the data back. Needs to pull the DMA to see if it's done because it's really hard to know when these things are done. And then at that point, the OS can restore the user thing and at that point, all of its locality and its caches are gone because everything has been flushed to DRAM. And then there was more, I'm sure it was awful. So what are the tricks here, right? These are solved problems. We all have GPUs in most of us play games. It has this problem. Why don't we encounter these things there? Well, their trick is they hide the latency. So they overlap transfer and operations. So if I just overlap the communications and I have multiple things in flight, all of a sudden my life got a lot better. But now my CPU has a full-time job, right? It is now the mother for the FPGA. That is all it's doing. That is all it has time to do. You have now lost a processing resource to gain a processing resource. That is truly gross and awful. So instead, you should execute, you should sequence the operations in the PL so that you don't need to do any of this handshaking yourself. Is it should just take care of it on the other side in the original config blast? So it looks a little more like that, where you send one packet over configuring the whole process and then run it over. And this is one of the deep insights about OpenGL, is that when the driver does a launch, you actually send the full pipeline configuration in one go, and then it runs. And then at that point, you get really low bandwidth high-latency comms to talk to it. Other than that, it's just ripping through. The problem is that you need to avoid blocking in that path. So you need to skip your false memory barriers. So everybody who's used libraries really likes to do one library call, wait till it's done, and then do the next library call when you can start as soon as you have the data. So in FFT, you can start as soon as you have half the data if you decide to do the top and middle. If you decide to start with the two top ones, you can start as soon as you get two data points. So start as soon as you have everything you need. And there are also true memory barriers. And we could talk about all the cool tricks to hide that. But we need to move on. You should understand your applications data rate because after you've fixed all your latency problems, you need to feed the beast. It likes to eat data, and it's hard to get it there. And all of the applications we like to use have really bad compute-to-bandwidth ratios. So this is rough, right? And FFT is the sort of log-in-one ratio, which is bad. I love my matrix multiplied because I send a little bit of data, and I need to do a lot of work. It's beautiful. And why do I think like this? Well, I go look at the resource bandwidths, right? So I have DRAM ports. I have two of them. They're each 128 bits. They clock at about 300 megahertz. I get 77 gigabits per second if I'm a god. That's never going to happen. I have BRAM ports. So all of the distributed memory. I have about 2,018 k bits of BRAMs. Each of them have a 32-bit channel. We'll just worry about the read side. Don't worry about the write side. They run at 600 megahertz. They go at 38 terabits per second, right? The real problem is my DSP runs at 114 terabits per second. So it's still yet faster than my local memories and way, way faster than my DRAM. So anything that I'm doing needs to live on the FPGA. It doesn't get to leave. The FPGA is Hotel California. The registers help a bit, but the registers are everywhere and they're single-bit and they don't actually run at 600 megahertz. That's only if you're really, really good. But we'll talk about how to get close to that at the end. So you need to exploit locality. So we've been calling this the memory wall. So registers are going to mitigate your band limit in BRAM. BRAM mitigates your band limit in DRAM and avoid writing back intermediates, right? Is if the next processing stage is going to consume it, don't write it somewhere. They don't know what it is with some computer scientists, but they're hoarders. They like to have their data in DRAM for no good reason. They're never going to look at it, but they feel really comfortable knowing where it is. Stop it. So how does this locality trick work? Think of this big block as DRAM, as your BRAM. This is your local cache where I'm going to keep some of my immediate locality.  This is one kernel running or one processing block and this is its neighboring block. They are eating out of the same buffer. So they're not telling each other when the buffer is done. They are immediately grabbing things right off the bat. And as it's processing, it chunks data in and the other one slides its window along. And it just moves along and it's pretty. And data gets evicted and I never actually need to hold what you might think is the real working set, right? I don't need to hold a full image. I just need to hold the last thing in and the thing I'm evicting. And then if I'm really clever, this is a window, right? And if you look at the window, the window shares six squares every time. So I store the six squares in little boxes and then only update the three new squares. And so that's how I solve some of my bandwidth problems out of my cache, right? And so thinking about where these locality exist and the different layers of locality is really important for getting high performance audio accelerators. And this is sort of how we're going to feed the beast. So these are some of the system pitfalls. There's a good number of other ones, but I want to kind of get it through. First we're going to train individual actions and then we're going to train tricks.  It has two steps. Sit on the mat and cross your legs. It's a dumb. It brings me great pleasure. To get her to do that, I needed to teach her both things independently, work through it a large number of times, work that they are together. FPGAs are kind of similar. There's not that much in an FPGA. We can sort this out. So we need to think structurally about design. So what is an FPGA? Well, roughly their tiles. They're organized so that you get a pair of VRAMs, each 18 kb with a 36 bit read write interface. You get two DSPs that for some reason, even though it's a Mac, it has four ports in and one port out. It's because it's not a Mac. Then I have some number of LUTs and some local crossbar. I think back of the envelope for the processor I was looking at was about 305 to two lookup tables and about 301 bit states. So there's not a whole lot in this tile. But this is kind of your view of the world, right? Is I get a DSP that gets to talk to these VRAMs. I do get to go north and I get to go south because the way that they've designed this is it's cookie cutter. They took the shape and stamped it out a bunch of times. So going north and south is really easy. There is a global interconnect. It's truly gross and awful. So some minor misconceptions that I'm not really going to get into. So hopefully at this point you're convinced that an FPGA is not a verilog accelerator. It looks a lot more like somebody stopped doing their job on a systolic array part way through and said the rest is you. There are actually slices. It's not lots and registers. The tool loves to lie to you. They actually have a macro with tons of cool stuff buried in it. It's worth going and looking in the manual what it does. It also changes every generation. So you need to reread the manual every year. Wires are expensive, not gates. But for some reason the tool only reports the gates. It never reports the wires. It drives me nuts. You tell them and then they go, we can't figure out how to report it. I know it's a problem and I have ASIC tools that tell me how it's a problem. It's not that hard. Global wires are worse. So what's my takeaway from this? Pipeline your DSPs. So for some reason everybody wants to do a single multiply, accumulate, and cycle. The macro that's hard baked in there has four pipe stages in it. If you ask for the four pipe stage DSP, you get a four pipe stage DSP. That is how you get this to run at 600 megahertz. If you do not do that, it runs at 100 megahertz. That's sad. That's a regret factor of six. Also really neat, it has a pre-adder. That seems kind of helpful. Because if you're doing complex multiplies, sometimes you do a pre-ad. I'm pretty sure that's the reason that it's there. So that was a caricature. That's not what it really is. It's this. It's way worse. There's all these wires that are going everywhere. There's muxes. There's extra flip-flops I didn't even talk about. The first picture came from the front of the manual where they're trying to convince you this is a good thing. This came from the back of the manual. But this is more helpful. Pipeline your BRAMs. Everybody wants single cycle memory look-ups. Some people like a memory look-up while they're doing math. That's craziness. These have input flops for the addresses and output flops for the data. They also have input flops for the incoming write data. If you do not do it, it runs dog's flow. This was actually the thing that killed us on most of our image processing problems. Probably because we had a ton of these everywhere. But this will be one of the biggest contributors to running slow because it would just never occur to you that memory accesses are pipelined. This is how your caches work. So most caches, L1 is two pipe stages. Your L2 is like four or five pipe stages. This is just how memory is now. If you build a custom ASIC, I'm going to try and make this as deep as humanly possible. So when I'm thinking about it structurally, the goal I have is to maximize my resource utilization. So I roughly have three assets. I have DSPs that have rates and location. This is kind of a weird view of the world because I have DSPs that are local to memories and I have DSPs that are not local to memories. So that specific DSP is a resource. BRAMs are weird because they have capacity, ports, bandwidth, and location. And oftentimes I'm picking and choosing what I want and we'll talk about how that works with FFT. DRAM, I have bandwidth and I have ports. It turns out that often I need to share the DRAM with other people and it's really hard. So sometimes I have to build a controller just to arbitrage who gets to deal with the DRAM. Generally my goals are spatial utilization. I want to be between 70 and 90%. Below 70%, somebody's not doing what they're supposed to be doing. At 70%, they're at the point where most industry people will say they did a good job but they didn't. Roughly the difference between 70 and 90 is space. If you know where things are, you can get to 90. If you didn't want to look at where things are, you're going to sit at 70. Temporal utilization. If you've allocated something, use it 99% of the time. Most people get a high spatial utilization but everything is off. What was the point? And then minimize your regret, right? Don't utilize something just to run six times slower than you would otherwise. That is sad. So how do we plan a trick? So the way I think about this, right, is so let's do an in-place FFT, right? We'll do a radix to butterfly. We'll do 32 bit floats. So in order to service this, right, I need a bandwidth to support that 128 bit in, 128 bit out. So the limiting factor is going to be the bandwidth on my BRAMs. One, two, three, four. Now I could tie them straight in but I have a problem. In the early part of the FFT, it's an even odd calculation, right? I'm going to grab every other thing. So I could stride the axis. On the back end, they're all going to be on the left side. So now I have a problem. So they call this the conflict problem in FFT allocations. And it's really hard to do in-place FFTs this way. So the trick is that as you're writing things back, you need to move it. So if you've dealt with the Xilinx accelerators, the way they solve this problem is that they unroll it in space and actually have a dedicated unit to reshuffle the data. This is also going to be super deeply pipelined. This is going to be three cycles. This is roughly going to be 12 cycles. And this, in order to get the 600 megahertz out of the programmable logic, because this is all going to need to be implemented in programmable logic in a set of state machines controlling that sequencer, this is probably going to be 10 cycles. It's not going to make any sense that it's 10 cycles. But roughly every time you have a 5 to 2 lookup table, you have a register. So if you don't use the register, you're throwing it away. So you always want to deeply pipeline your programmable logic. And if I could leave you with any one big takeaway about how to build these accelerators, is that on the FPGA, they sort of want to be pipelined in an irritating way, like two or three logic levels per pipe stage. It sounds really weird to say as an ASIC person, because I shoot for 20 logic levels per pipe stage, that's sort of a good place to be. But this really wants three or four logic levels, or two logic levels at the most. Part of the reason is that the logic is not expensive, it's the wire. And any time you touch the logic, it has to run around some crossbar to get where it's going. So now I'm going to end with sort of an argument to get your opinion and hear where you are or say something controversial. You wouldn't have had to listen to everything I just said if there was a good Verilog library, right?  I could ignore everything you said, right? You don't actually need to know how to write a really good FFTW. I mean a really good FFT. At this point I just say the library name, FFTW, instead of actually thinking FFT, right? It's one to one in my head right now. So why isn't it like that for Verilog? Why can't we utilize best practices from software? Why can't it have compact APIs? Why can't it have parametric calls? Why can't we parameterize these things? Why isn't it well documented? I think there's something about electrical engineers and specifically digital engineers about documentation.  My students make me hate making them do it. So it's just all sorts of awful. And I have yet to see anybody actually benchmark code that they've given out as Verilog. But that's standard practice in a software library, right? So these are all things that, you know, how do we get part way there? How do we even figure this out? And then there's really awful catch 22s built into this too. Because right now anything free in terms of Verilog is crap.  If it's free, it's bad, right? It's like finding a donut in the garbage. Because if they gave it away, they thought it had no value. The other problem is nobody will use anything they find in the wild if they think it's good because there's a chance that it wasn't used in a tape out. So if you want to argue with me more or talk with me more about how awful FOSS hardware is, I will be around. So thank you. Thoughts, concerns, hopes, dreams, desires. I think we have quite a queue for the satellite talk. Yeah, go ahead. So certainly a lot of the devices that couple the FPGA with the DACs directly so that you're streaming from the DACs directly into the FPGA solve a lot of these problems.